Hi,
also das ist deine Ausgangslage?:
Code: Alles auswählen
$imageSource = "CMS_IMG[1]";
$imageDescription = "CMS_IMGDESCR[1]";
if (cRegistry::isBackendEditMode()) {$imageEditor = "CMS_IMGEDITOR[1]";}
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;
} else {
$image = NULL;
}
Hier wird CMS_IMG[1] als Pfad, und die Bildbeschreibung via CMS_IMGDESCR[1] erfasst.
Möchtest du mehrere Bilder haben, brauchst du mehrere davon:
Code: Alles auswählen
$imgArr = array();
$imgResult = array();
for($i=1; $i<$imgNum;$i++){
$imgArr['imageSource'] = "CMS_IMG[$i]";
$imgArr['imageDescription'] = "CMS_IMGDESCR[$i]";
if (cRegistry::isBackendEditMode()) {
$imgArr['imageEditor'] = "CMS_IMGEDITOR[$i]";
}
if(is_array($imgArr)) array_push($imgResult,$imgArr);
}
Nun soll das image-Objekt für Smarty gepackt werden:
Code: Alles auswählen
// Außerhalb der foreach-Schleife wegen Performance
$clientConfig = cRegistry::getClientConfig(cRegistry::getClientId());
$imgObjArr = array();
foreach($imgResult as $key => $val){
if (0 < strlen($imageSource)) {
$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;
} else {
$image = NULL;
}
if($image!=NULL){
array_push($imgObjArr,$image);
}
}
.... Weiter unten übergibst du das Array mit den Objekten an Smarty:
Code: Alles auswählen
$tpl = cSmartyFrontend::getInstance();
$tpl->assign('label', $label);
$tpl->assign('imgTags', $imgObjArr);
$tpl->assign('isBackendEditMode', (int) cRegistry::isBackendEditMode());
$tpl->display($tpl_file);
In Smarty musst du es dann halt entsprechend auspacken:
Code: Alles auswählen
{foreach from=$imgTags item=img}
<img src="{$img->src}" alt="{$img->alt}" width="{$img->width}" height="{$img->height}">
Ein "sauber" programmiertes Beispiel dafür findest du auch in meinem Modul xst_dynamic_content.
Damit erzeugst du einen Array, der wiederrum die Image-Objekte beinhaltet.
PS: Der Code ist ungetestet... einfach so aus dem Kopf zusammengeschrieben. Sollten Flüchtigkeitsfehler drin sein, musst du die halt beheben...
aber ich denke das Prinzip wird deutlich.
Jetzt geh ich erstmal Frühstücken