All-in-one Include-Tag

Aus APF Wiki [de]

Wechseln zu: Navigation, Suche

Es kommmt immer wieder die Frage auf, ob es möglich ist, eine Taglib zur Einbindung eines Templates zu haben, in dem alle Taglibs des APF bereits bekannt sind und kein

<core:addtaglib .../>

mehr notwendig ist. Durch die generische Implementierung des Page-Controller ist es zu jeder Zeit möglich, das Verhalten des Aufbaus des APF-DOM-Baumes und die DOM-Elemente selbst zu beeinflussen.

Für diese Aufgabe nutzen wir den bereits vorhandenen Tag <core:importdesign /> als Grundlage und erweitern diesen so, dass er die von uns gewünschten Taglibs zusätzlich zu den bisherigen kennt.

Das funktioniert wir folgt:

class all_taglib_importdesign extends core_taglib_importdesign {
   public function all_taglib_importdesign(){
      $this->__TagLibs[] = new TagLib('tools::form::taglib','html','form');
      $this->__TagLibs[] = new TagLib('tools::media::taglib','html','mediastream');
      ...
      $this->__TagLibs[] = new TagLib('my::taglib','all','importdesign');
   }
}

Dem Konstruktor der Klasse kann man entnehmen, dass die Taglib selbst ebenfalls in der Reihe der bekannten Taglibs erscheint. Dies ist insofern notwendig, als dass der Tag <all:importdesign /> auch in durch den Tag eingebunden Templates bekannt sein soll.

Um den Mechanismus zu nutzen, muss der Tag einmalig im Basis-Template bekannt gemacht und zur Einbindung eines Templates genutzt werden. Anschließend ist der Tag im kompletten Baum verfügbar und die hinzugefügten Tags sind ohne zusätzliche Einbindung bekannt. Dies kann per

<core:addtaglib namespace="..." prefix="all" class="importdesign" />
<all:importdesign namespace="..." template="" />

erledigt werden.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
menü
misc
Werkzeuge