Frage zu CMS_IMG

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Zuschauer
Beiträge: 141
Registriert: Do 5. Dez 2013, 08:57
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von Zuschauer » Mi 6. Mai 2015, 07:03

frogli hat geschrieben:Könntest du so nett sein und mir ein Thread oder irgend eine Doku mit Beispiel empfehlen, wo ich mich informieren kann was ich mit die ID machen kann.
Beispielcode für Contenido 4.8:

Code: Alles auswählen

<?php
$imageSource = $startartikel->getContent('CMS_IMG',1);
if (is_numeric($imageSource)) {
    $sql = 'SELECT dirname, filename
            FROM ' . $cfg['tab']['upl'] . '
            WHERE (idupl=' . $imageSource . ')';
    $db->query($sql);
    if ($db->next_record()) {
        $imageSource = $db->f('dirname') . $db->f('filename');
    } else {
        $imageSource = '';
    }
}
?>
Ich denke, das sollte in der 4.9 nicht anders sein.

Gruß
Zuschauer

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von homtata » Mi 6. Mai 2015, 08:22

Ich löse das an einer Stelle wie folgt für die 4.9, wenn ich auf einen Artikel zugreifen will, der NICHT der aktuelle Artikel ist:

Code: Alles auswählen

$article = new cApiArticleLanguage();
$article->loadByArticleAndLanguageId($cms_idart, $lang);

$image = new cApiUpload();
$idupl = $article->getContent('imgeditor', 1);
$image->loadByMany( array("idupl"=>$idupl) );
$dirname =$image->getField("dirname"),
$filename = $image->getField("filename");

frogli
Beiträge: 70
Registriert: Do 29. Apr 2004, 17:42
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von frogli » Do 7. Mai 2015, 21:06

@homtata & @Zuschauer

Danke für die Beispiele. Ich werde mich gleich damit auseinander setzen. :D

frogli

** Ergänzung **

Wäre es nicht möglich diese Referenz- & Standard-Beispiele auf die API-Website api.contenido.org (sowie es php.net macht) an den entsprechenden Stellen zu ergänzen?

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von malsdgtac » Mi 19. Aug 2015, 17:20

Hallo,

wie kann ich eigentlich auf die META-Daten eines eingefügten Bildes zugreifen - wenn ich von einem anderen Artikel darauf zugreife? Ich kann zwar die META-Daten aus der Dateiverwaltung auslesen, hätte aber gerne jene die direkt im Editor eingegeben werden.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von Faar » Mi 19. Aug 2015, 19:23

Werden die Daten des Editors nicht in der DB gespeichert?

Falls nicht und es sich um einen anderen Artikel handelt, musst du nur den Artikel-Text auslesen und nach img durchsuchen und dann die Daten in img auflösen.
preg_match() könnte hierbei hilfreich sein.
Oder das hier: http://simplehtmldom.sourceforge.net/

Code: Alles auswählen

// Find all images
foreach($html->find('img') as $element)
       echo $element->src . '<br>';
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von malsdgtac » Mi 19. Aug 2015, 19:34

Hallo,
danke für deine Antwort - da hast du mich etwas falsch verstanden. Ich suche nicht das Bild in einem Text. Sondern das Bild wird mit dem imgeditor angegeben und mit

Code: Alles auswählen

$article = new cApiArticleLanguage();
$article->loadByArticleAndLanguageId($cms_idart, $lang);
$idupl = $article->getContent('imgeditor', 1);
komme ich an die ID des ausgewählten Bildes. Darüber kann man auch recht unkompliziert auf die Datein in der Dateiverwaltung zugreifen. Man kann aber im imgeditor noch separate MEAT-Daten für das Bild angeben (Bildbeschreibung usw.) und an die will ich dran kommen.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von Faar » Mi 19. Aug 2015, 19:40

Ah, ok.
Die Dateiverwaltung hat zwei Tabellen: Eine für die Bilder mit Pfad und so, und eine für die Meta-Daten.
Dort in den Meta-Daten-Tabelle (con_upl_meta) sollten diese Metadaten stehen.
Zumindest hole ich sie mir dort heraus, mit der Bild-ID.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von malsdgtac » Mi 19. Aug 2015, 19:43

Hallo,
ja genau - so komme ich an die Daten wie sie in der Dateiverwaltung angegeben werden - aber nicht an die wie sie im Artikel vergeben werden.

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von homtata » Mi 19. Aug 2015, 20:54

Hallo smac,
da gibt es meines Wissens keinen Unterschied. Egal ob die Metatags im Dateiupload oder im CMS_IMG-Element eingegeben werden - es handelt sich um die identischen Einträge, die in con_upl_meta landen. Lässt sich einfach testen: in einem CMS_IMG mal einen Metatag eingeben und dann das Bild in der Dateiverwaltung aufrufen - dann steht der Eintrag drin.
Also wie von Faar vorgeschlagen: die Meta-Daten hierfür über die entsprechenden Klassen/Funktionen holen!

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von Oldperl » Do 20. Aug 2015, 08:59

Servus,

korrekt was homtata sagt. Es wird sowohl im BE-Bereich als auch im CMS_IMGEDITOR über die Klassen cApiUpload() und cApiUploadMeta() auf die entsprechenden Daten in con_upl und con_upl_meta zugegriffen bzw. Änderungen dort gespeichert. Somit kann man eine Instanz dieser Klassen nutzen um auf die Daten zuzugreifen. Beispiele dafür findet man in der Klasse des CMS-Types unter contenido/classes/content_types/class.content.type.imgeditor in den entsprechenden Methoden, Auslesen beispielsweise gleich im Konstruktor.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von malsdgtac » Di 23. Feb 2016, 21:08

Hallo,
sorry, dass ich erst so spät zum Antworten komme. Es stimmt was ihr geschrieben habt, man kann an beiden Seiten speichern und zugreifen.

csmd
Beiträge: 20
Registriert: Mo 15. Jun 2009, 11:06
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von csmd » Di 6. Jun 2017, 12:35

Hallo zusammen,

aktuell verzweifle ich auch gerade an dem Auslesen der Metas.
Anscheinend habt ihr eine Lösung dafür gefunden :)

ich bin allerdings nicht Programmierer genug, um mit den Contenido-Klassen out-of-the-box arbeiten zu können.

Könnt ihr mir einen Weg aufzeigen, wie ich im Standard-Modul "content_image" möglichst elegant den Medianame in eine Variable bekomme?
Das müsste mit Verwendung der Klassen doch nur ein 2-Zeiler sein, oder? :shock:

Ich habe schon alles mögliche probiert und gebe auf.

Viele Grüße, Christian

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von Faar » Di 6. Jun 2017, 13:44

Das könnte theoretisch so gehen:

Code: Alles auswählen

$imgObjekt = new cContentTypeImgeditor();
$returnValue = $imgObjekt->getMetaData();

// vielleicht sogar kürzer so:
$returnValue = cContentTypeImgeditor::getMetaData();
Dann steht im besten Fall bei returnValue folgende Struktur drin:

Code: Alles auswählen

$returnValue = array(
    "medianame" => "bla",
    "descirption" => "picture of a lake",
    "keywords" => "lake nice picture"
    "internalnotice" => "do not touch"
    "copyright" => "(C) 1295");
Damit wäre dann einfach an die Daten zu kommen:

Code: Alles auswählen

echo "Copyright: ".$returnValue[copyright];
Das Dumme ist, die Klasse erwartet oben eine Eingaben an Daten.
Mit der ID ist es noch einfach, das ist die ID des Image-Content-Types.
Also:

Code: Alles auswählen

CMS_IMGEDITOR[2]
Die 2 wäre dann die ID, die diese Klasse mindestens benötigt.
Aber so siehts aus, die ID ist nur ein Teil der Angaben:
($rawSettings, $id, $contentTypes)
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von Oldperl » Di 6. Jun 2017, 14:15

Servus,
Faar hat geschrieben:
Di 6. Jun 2017, 13:44
Das könnte theoretisch so gehen:
äh nein, nicht mal theoretisch. :roll:

Die Klasse cContentTypeImgeditor erwartet, wie Frank schon sagt, nicht nur eine ID, in diesem Fall die ID des an dieser Stelle eingesetzten Content-Types, sondern als 3. Param ein Array mit dem Inhalt aller im Artikel eingesetzter Content-Types

Code: Alles auswählen

/**
     * Constructor to create an instance of this class.
     *
     * Initialises class attributes and handles store events.
     *
     * @param string $rawSettings
     *         the raw settings in an XML structure or as plaintext
     * @param int $id
     *         ID of the content type, e.g. 3 if CMS_DATE[3] is used
     * @param array $contentTypes
     *         array containing the values of all content types
     */
    public function __construct($rawSettings, $id, array $contentTypes) {
Daher ist es nicht mit einer einfachen Instanzierung der Klasse getan. Ich würde in diesem Falle auch eher empfehlen die Meta-Daten direkt über die Klasse cApiUploadMetazu holen und vorher die ID über die Upload-Klasse cApiUpload und die Methode loadByMany der Elternklasse Item zu ermitteln. Dabei muss man der load-Methode nur den Dateinamen, den Pfad und die Sprache als Parameter übergeben um den entsprechenden Datensatz zu laden und dann die ID auslesen.

Gruß aus Franken

Ortwin

PS: Eine Instanz von CMS_IMGEDITOR[x] scheidet aus, weil dieser CMS-Type im Frontend das hinterlegte Bild als kompletten img-Tag ausgibt.
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von Faar » Di 6. Jun 2017, 16:17

Oldperl hat geschrieben:
Di 6. Jun 2017, 14:15
Servus,
Faar hat geschrieben:
Di 6. Jun 2017, 13:44
Das könnte theoretisch so gehen:
äh nein, nicht mal theoretisch. :roll:
:motz:

Code: Alles auswählen

Daher ist es nicht mit einer einfachen Instanzierung der Klasse getan.
Ja, das hatte ich vermutet und es fehlt in der Beschreibung ein Beispiel: https://docs.contenido.org/display/COND ... _IMGEDITOR
Da stehen zwar die Methoden, aber nicht wie man sie im praktischen Fall nutzen kann.
Man hat im Normalfall die CMS-Type ID, mehr nicht. :(
Ich würde in diesem Falle auch eher empfehlen die Meta-Daten direkt über die Klasse cApiUploadMetazu holen
Wenn man die idupl hat, kein Problem. :twisted:
und vorher die ID über die Upload-Klasse cApiUpload und die Methode loadByMany der Elternklasse Item zu ermitteln.


Na das ist ja einfach... und wie machst du das im Beispiel? :?
Dabei muss man der load-Methode nur den Dateinamen, den Pfad und die Sprache als Parameter übergeben um den entsprechenden Datensatz zu laden und dann die ID auslesen.
aha... das wird ja immer einfacher. :roll:
Aber wie sähe Dein Code aus?
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Antworten