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?
csmd
Beiträge: 20
Registriert: Mo 15. Jun 2009, 11:06
Kontaktdaten:

Re: Frage zu CMS_IMG

Beitrag von csmd » Di 6. Jun 2017, 16:27

Hallo zusammen,

also erstmal lieben Dank für die rege Beteilung :-)

Ich denke, wir bekommen das bald gelöst.

So weit bin ich inzwischen:

Code: Alles auswählen

if (0 < strlen($imageSource)) {
    $clientConfig = cRegistry::getClientConfig(cRegistry::getClientId());
    $filename = str_replace($clientConfig["upl"]["htmlpath"], $clientConfig["upl"]["path"], $imageSource);
    
	$clientID = cRegistry::getClientId();
	$uplfilename = basename($filename);
	$upldirname = dirname($filename);
	$upload = new cApiUpload();
	$upload->loadByMany(array(
		'filename' => $uplfilename,
		'dirname' => $upldirname,
		'idclient' => $clientID
	), false);
	$idupl = $upload->get('idupl');
	$uploadMeta = new cApiUploadMeta();
	$uploadMeta->loadByMany(array(
		'idupl' => $idupl,
		'idlang' => $lang
	));
	$medianame = $uploadMeta->get('medianame');
	
... usw
(bis auf diese Erweiterung geht es um das orig "content_image" Modul)
($imageSource = "CMS_IMG[1]";)

Leider bleibt die Variable $idupl leer, womit der Meta Kram dann auch nicht ausgelesen werden kann.
Mache ich beim Filename was falsch?
Wie müssen denn die beiden Pfade filename / dirname aussehen?

Viele Grüße, Christian
Zuletzt geändert von csmd am Di 6. Jun 2017, 16:44, insgesamt 1-mal geändert.

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

Re: Frage zu CMS_IMG

Beitrag von csmd » Di 6. Jun 2017, 16:32

Also es wäre schon beknackt, wenn man diese Contenido-Funktion "getImageMeta" nicht einfacher nutzen kann, sondern ziemlich 1:1 im Modul nachbauen muss.

Falls es doch eine einfachere Art der Verwendung gäbe, schließe ich mich Faar an und appeliere dafür, die Dokumentation mit kleinen Beispielen zu versehen (wie bei PHP.net). Sonst blickt doch keiner mehr richtig durch...

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:49

Man könnte es aus Homtatas Version mit den Klassen so zusammenbauen:

Code: Alles auswählen

$article = new cApiArticleLanguage();
$article->loadByArticleAndLanguageId($cms_idart, $lang);
$idupl = $article->getContent('imgeditor', 1);

$imagemeta = new cApiUploadMeta();

...
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

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

Re: Frage zu CMS_IMG

Beitrag von Oldperl » Di 6. Jun 2017, 17:17

Servus,

Erweiterung für das Modul content_image (einfach den Code ab dem Kommentar bis Modulende ersetzen):

Code: Alles auswählen

// build class containing all data necessary to display image
// therefor the image dimensions have to be determined
if (0 < strlen($imageSource)) {
    $clientConfig = cRegistry::getClientConfig(cRegistry::getClientId());
    $filename = str_replace($clientConfig["upl"]["htmlpath"], $clientConfig["upl"]["path"], $imageSource);
    list($imageWidth, $imageHeight) = getimagesize($filename);
    $image = new stdClass();
    $image->src = $imageSource;
    $image->alt = $imageDescription;
    $image->width = $imageWidth;
    $image->height = $imageHeight;
    
    
    $aPathInfo = pathinfo(str_replace($clientConfig["upl"]["htmlpath"], '', $imageSource));
    $aMeta = array();
    $oUpl = new cApiUpload();
    $oUpl->loadByMany(array(
        'filename' => $aPathInfo['basename'],
        'dirname'  => $aPathInfo['dirname']."/",
        'idclient' => cRegistry::getClientId()
    ));
    if($oUpl->isLoaded()) {
        $oUplMeta = new cApiUploadMeta();
        $oUplMeta->loadByUploadIdAndLanguageId($oUpl->get('idupl'), cRegistry::getLanguageId());
        if($oUplMeta->isLoaded()) {
            $aMeta = $oUplMeta->toArray();
        }
    }
} else {
    $image = NULL;
}

// When in backend edit mode add a label so the author
// knows what to type in the shown field.
if (cRegistry::isBackendEditMode()) {
    $label = mi18n("LABEL_IMAGE");
} else {
    $label = NULL;
}

// use smarty template to output header text
$tpl = cSmartyFrontend::getInstance();
$tpl->assign('label', $label);
$tpl->assign('editor', $imageEditor);
$tpl->assign('image', $image);
$tpl->assign('meta', $aMeta);
$tpl->display('get.tpl');
Im Template kann man nun ein Array mit dem Namen "meta" nutzen, in dem folgende Infos vorhanden sind

Code: Alles auswählen

array(12) {
  ["id_uplmeta"]=>
  string(2) "xx"
  ["idupl"]=>
  string(2) "xx"
  ["idlang"]=>
  string(1) "x"
  ["medianame"]=>
  string(0) ""
  ["description"]=>
  string(0) ""
  ["keywords"]=>
  string(0) ""
  ["internal_notice"]=>
  string(0) ""
  ["author"]=>
  string(8) "sysadmin"
  ["created"]=>
  string(19) "2016-11-04 11:22:49"
  ["modified"]=>
  string(19) "2016-11-04 11:22:49"
  ["modifiedby"]=>
  string(0) ""
  ["copyright"]=>
  string(0) ""
}
Gruß aus Franken

Ortwin

PS: Weitere Infos gibt es nur per Premium-Abo (kostenpflichtig) :wink:
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

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

Re: Frage zu CMS_IMG

Beitrag von csmd » Di 6. Jun 2017, 17:46

Oldperl hat geschrieben:
Di 6. Jun 2017, 17:17
Servus,

Erweiterung für das Modul content_image (einfach den Code ab dem Kommentar bis Modulende ersetzen):
...
WOW Ortwin, sehr elegant gelöst :-)
Super, Danke!
Hast was gut ;-)

Da war meine Vermutung mit dem Pfad gar nicht so arg falsch ...
Ich Deppele hatte auch ganz den fehlenden Slash "/" übersehen.

Nachdem ich die kleinen Tweaks mit pathinfo und "/" angepasst hatte, kam auch direkt eine Ausgabe hier an.
Der Rest von dir ist natürlich die Deluxe-Version.

Das hier ist meine abgespeckte Fassung, wie ich sie einsetzen werde
(ich wollte die Variable Medianame im Modul selbst noch etwas weiter verwursteln, bevor ich sie in verschiedenen Fassungen ans Template schiebe)

Code: Alles auswählen

	$aPathInfo = pathinfo(str_replace($clientConfig["upl"]["htmlpath"], '', $imageSource));
	$upload = new cApiUpload();
	$upload->loadByMany(array(
		'filename' => $aPathInfo['basename'],
        'dirname'  => $aPathInfo['dirname']."/",
		'idclient' => cRegistry::getClientId()
	), false);
	$uploadMeta = new cApiUploadMeta();
	$uploadMeta->loadByMany(array(
		'idupl' => $upload->get('idupl'),
		'idlang' => cRegistry::getLanguageId()
	));
	$medianame = $uploadMeta->get('medianame');
Oldperl hat geschrieben:
Di 6. Jun 2017, 17:17
Gruß aus Franken

Ortwin

PS: Weitere Infos gibt es nur per Premium-Abo (kostenpflichtig) :wink:
Was, wie, wo? Haben will! :D

Viele Grüße, Christian

Antworten