Eigene insert tags erstellen: Unterschied zwischen den Versionen

Aus Contao Community Documentation

K (Es fehlte ein Hochkomma.)
K (Umstellung auf Syntax Highlighting.)
Zeile 22: Zeile 22:
 
In diesem Code-Beispiel soll der Insert-Tag <nowiki>{{foo::bar}}</nowiki> ersetzt werden.
 
In diesem Code-Beispiel soll der Insert-Tag <nowiki>{{foo::bar}}</nowiki> ersetzt werden.
 
Als erstes muss der Hook registriert werden.
 
Als erstes muss der Hook registriert werden.
 +
<source>
 
  // config.php
 
  // config.php
 
  // Registrieren des Hooks replaceInsertTags
 
  // Registrieren des Hooks replaceInsertTags
 
  $GLOBALS['TL_HOOKS']['replaceInsertTags'][] = array('MyClass', 'myReplaceInsertTags');
 
  $GLOBALS['TL_HOOKS']['replaceInsertTags'][] = array('MyClass', 'myReplaceInsertTags');
 +
</source>
  
 
Nach der Registrierung des Hooks muss eine Klasse erstellt werden, welche eine Methode zur Ersetzung beinhaltet.
 
Nach der Registrierung des Hooks muss eine Klasse erstellt werden, welche eine Methode zur Ersetzung beinhaltet.
 +
<source>
 
  //MyClass.php
 
  //MyClass.php
 
  class MyClass extends Frontend
 
  class MyClass extends Frontend
Zeile 43: Zeile 46:
 
  }
 
  }
 
  }
 
  }
 +
</source>
 
In der Methode myReplaceInsertTags muss man zuerst prüfen, ob man für den unbekannten Insert-Tag zuständig ist. Wenn man einen zweigeteilten Insert-Tag verwendet, splittet man den Tag anhand des :: (explode). Die geschweiften Klammern werden bereits von Contao entfernt und müssen daher nicht mehr entfernt werden.  
 
In der Methode myReplaceInsertTags muss man zuerst prüfen, ob man für den unbekannten Insert-Tag zuständig ist. Wenn man einen zweigeteilten Insert-Tag verwendet, splittet man den Tag anhand des :: (explode). Die geschweiften Klammern werden bereits von Contao entfernt und müssen daher nicht mehr entfernt werden.  
  
 
// der Schluss ist irgend wie noch nicht richtig Formuliert, ich kann leider nicht mehr, bin total übermüdet....
 
// der Schluss ist irgend wie noch nicht richtig Formuliert, ich kann leider nicht mehr, bin total übermüdet....

Version vom 26. August 2010, 23:51 Uhr

MsgError.png Unvollständiger Artikel: dieser Artikel ist noch nicht sauber bearbeitet.

Bitte erweitere ihn und entferne erst anschliessend diesen Hinweis.

betrifft
TYPOlight Version ab 2.6
Contao Version ab 2.9

Unter Insert-Tags versteht man in Contao spezielle Platzhalter, die beim Laden der Webseite durch bestimmte Inhalte ersetzt werden. Dies können zum Beispiel der aktuelle Benutzername, ein Datum oder ein Link sein. Der Contao-Core bietet eine ganze Reihe verschiedener Insert-Tags, welche auf der Projekthomepage dokumentiert sind (siehe Contao Insert-Tags).


Aufbau eines Insert-Tags

Insert-Tags werden generell in zwei geschwungenen Klammern verpackt. {{var::value}} Des weiteren sind Insert-Tags meistens zweigeteilt. Die Wertepaare sind durch zwei Doppelpunkte getrennt. Der erste Teil ist entweder die Kategoriezugehörigkeit des Insert-Tags oder der Name des Tags. Der zweite Teil ist meistens ein Parameter, um die gewünschte Rückgabe noch zu verfeinern. Ein Beispiel verdeutlicht dies: {{link::*}} Dieser Insert Tag würde einen Link zur Seite * (muss durch die ID der Seite ersetzt werden) im richtigen URL Format generieren.

Eigene Insert-Tags erstellen

Seit TYPOlight Version 2.6 kann man Contao durch eigene Insert-Tags erweitern. Dazu wurde der Hook replaceInsertTags zur Verfügung gestellt. Der Ablauf ist nun folgender.

  1. Contao parsed einen Seitenaufruf und stößt dabei auf ein Insert-Tag
  2. Contao probiert dieses Insert-Tag mit den Core-Möglichkeiten zu ersetzen
  3. Wenn Contao das Insert-Tag nicht kennt, wird es an den Hook replaceInsertTags weitergereicht. Dieser Hook erhält das unbekannte Insert-Tag als Parameter. Nun kann der Entwickler prüfen ob er das unbekannte Insert-Tag ersetzen möchte und wenn ja, gibt er einen beliebigen Content zurück.
  4. Wenn der Entwickler nichts mit dem unbekannten Insert-Tag anfangen kann, so muss false zurück gegeben werden.

Codebeispiel

In diesem Code-Beispiel soll der Insert-Tag {{foo::bar}} ersetzt werden. Als erstes muss der Hook registriert werden.

 // config.php
 // Registrieren des Hooks replaceInsertTags
 $GLOBALS['TL_HOOKS']['replaceInsertTags'][] = array('MyClass', 'myReplaceInsertTags');

Nach der Registrierung des Hooks muss eine Klasse erstellt werden, welche eine Methode zur Ersetzung beinhaltet.

 //MyClass.php
 class MyClass extends Frontend
 {
 	public function myReplaceInsertTags($strTag)
 	{
 		$arrSplit = explode('::', $strTag);
 
 		if ($arrSplit[0] == 'foo')
 		{
 			// replace your Insert Tag
 			return 'mein content';
 		}
 
 		return false;
 	}
 }

In der Methode myReplaceInsertTags muss man zuerst prüfen, ob man für den unbekannten Insert-Tag zuständig ist. Wenn man einen zweigeteilten Insert-Tag verwendet, splittet man den Tag anhand des :: (explode). Die geschweiften Klammern werden bereits von Contao entfernt und müssen daher nicht mehr entfernt werden.

// der Schluss ist irgend wie noch nicht richtig Formuliert, ich kann leider nicht mehr, bin total übermüdet....

Ansichten
Meine Werkzeuge

Contao Community Documentation

<Kellner> und einmal Filet?
<backbone87> Nein Olli, nicht Philip!

Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge