Lösung für CMS_tag[x]

Gesperrt
martin2002
Beiträge: 41
Registriert: Fr 31. Okt 2003, 02:16
Wohnort: Potsdam
Kontaktdaten:

Lösung für CMS_tag[x]

Beitrag von martin2002 »

Hi.

Ich hatte das Problem, dass ich an einen Artikel mehrere Links anfügen wollte... e.g. CMS_LINK[1] ... CMS_LINK[n]. Also so eine art Linkliste.

Nun funktioniert das ja aufgrund des Cores (im wesentlichen der conGenerateCode funktion) nicht, CMS_LINK[$id] zu schreiben oder Schleifen zu benutzen. Die Funktion geht ja davon aus, dass der jeweilige Tag direkt mit id im Code steht. Aber das sollte ja eh den meisten bekannt sein...

Jedenfalls habe ich mich heute mal hingesetzt und eine Erweiterung geschrieben die dies ermöglicht.
Sie basiert auf einer Klasse "class.multitype.php", die im "includes" Ordner vom Frontend abgelegt werden kann. Das jeweilige Modul das die CMS Variable benutzt muss dann die Klasse verwenden.

Die Klasse kann hier heruntergeladen werden:
http://www.krellmedia.com/upload/conten ... titype.zip
Sie ist eigentlich schon recht gut Kommentiert. Einige Codezeilen hab ich aus vorhandenen Klassen und Funktionen kopiert - das steht dann aber auch dabei!

Die Einbindung im Modul demonstriere ich hier mal anhand einer Linkliste:
(Input Code existiert hier nicht)

Modul Linkliste, Output:

Code: Alles auswählen

<?php

cInclude("frontend", "includes/class.multitype.php");

$cms_multitype = new CmsMultitype($idart, $lang, $idartlang);

$content = $cms_multitype->getContent("link");

if ($contenido && ($view == "edit")) {
   /* list editors for exisiting links */
   echo '<div id="linklist">';
   foreach ($content as $typeid => $val) {
      echo "Link $typeid: ".$cms_multitype->getEditor('link', $typeid)."<br>";
   }
   
   /* output new link edit item */
   echo "Neuer Link: ".$cms_multitype->getEditor('link')."<br>";
   echo '</div>';
} else { /* output parsed content */
   $tpl = new Template;
   
   $tpl->set('s', 'HEADLINE', mi18n('Linkliste'));
   
   if ($content) {
      foreach ($content as $typeid => $val) {
         $tpl->set('d', 'HREF', $val);
         $tpl->set('d', 'DESCRIPTION', $cms_multitype->getContent('linkdescr', $typeid));
         
         $title = $cms_multitype->getContent('linktitle', $typeid);
         if (empty($title)) $title = basename($val);
         $tpl->set('d', 'TITLE', $title);
         
         $target = $cms_multitype->getContent('linktarget', $typeid);
         if (!empty($target)) $target = 'target="'.$target.'"';
         $tpl->set('d', 'TARGET', $target);
         
         $tpl->next();
      }
   }
   
   $tpl->generate("templates/linkliste.html");
}

?>
Dazu gehört dieses Template:

Code: Alles auswählen

<div id="linklist" class="onsitebox float-right">
	<table class="h" cellspacing="0" cellpadding="0">
		<tr><td class="l"><img src="/images/space.gif" width="4px" height="1px"></td>
		<td><div class="headline"><h1>{HEADLINE}</h1></div></td>
		<td class="r"><img src="/images/space.gif" width="4px" height="1px"></td></tr></table>
	<table class="b" cellspacing="0" cellpadding="0"><tr><td class="l"><img src="/images/space.gif" width="2px" height="1px"></td><td><div>
<!-- BEGIN:BLOCK -->
		<p><a href="{HREF}" title="{TITLE}" {TARGET}>{TITLE}</a>
		{DESCRIPTION}</p>
<!-- END:BLOCK -->
	</div></td><td class="r"><img src="/images/space.gif" width="2px" height="1px"></td></tr></table>
	<table class="f" cellspacing="0" cellpadding="0"><tr><td class="l"><img src="/images/space.gif" width="5px" height="1px"></td><td><img src="/images/space.gif" width="1px" height="5px"></td><td class="r"><img src="/images/space.gif" width="5px" height="1px"></td></tr></table>
</div>
Im Bearbeitungsmodus positioniert sich das ganze recht unformatiert auf der Seite, das wäre sicher noch zu verbessern.

Ich habe es mit CMS_LINK getestet, es müsste aber auch mit allen anderen CMS Variablen klappen (ich sehe jedenfalls keinen Grund, warum es nicht gehen sollte)
Was leider noch nicht eingebaut ist, ist das eine Leere CMS Variable aus dem Array wieder entfernt wird. Das wird aber in den nächsten Tagen noch kommen, weil ich das eh brauche...

Vielleicht findet das ja jemand toll... Ich würde mich auf jeden Fall über Feedback und konstruktive Kritik freuen, es gibt sicher noch ein paar Sachen zu verbessern.

Greets
Martin.
Planung ist die Ersetzung des Zufalls durch den Irrtum ;-)
martin2002
Beiträge: 41
Registriert: Fr 31. Okt 2003, 02:16
Wohnort: Potsdam
Kontaktdaten:

Beitrag von martin2002 »

so ist das, kaum gepostet schon fällt mir ein das ich etwas vergessen habe:
also ich glaube zwar nicht, dass es schon jemand heruntergeladen hat... aber ich habe das zip-archiv mit der klasse nochmal aktualisiert.
ich hatte im konstruktor etwas vergessen, was ich noch machen wollte (bzgl. nichtangabe von $idart und $lang)
Planung ist die Ersetzung des Zufalls durch den Irrtum ;-)
Gesperrt