Hooks und InsertTags
in Contao(4)
In eigener Sache
Wer bin ich?
In eigener Sache
Wer bin ich?
- Oliver Reiff
- seit 1999 bei trilobit
- Gründer und Geschäftsführer
- Contao-Agentur seit 2008
- Premium-Partner für WebDesign, Programmierung und Schulung
{{insert::tags}}
Was ist das?
Insert Tags
Simple Ersetzungen
- {{br}}
=> <br>
- {{abbr::World Wide Web}}WWW{{abbr}}
=> <abbr title="World Wide Web">WWW</abbr>
Aber wozu?
Insert Tags
Echte Variablen
- {{date}}
=> aktuelles Datum
- {{version}}
=> aktuelle Contao-Core-Version
Insert Tags
Daten aus tl_page
- {{page::title}}
- {{page::pageTitle}}
- {{page::parentTitle}}
- {{page::rootPageTitle}}
- {{page::language}}
- ...
Insert Tags
Daten aus tl_member
- {{user::firstname}}
- {{user::lastname}}
- {{user::email}}
- {{user::city}}
- {{user::country}}
- ...
Insert Tags
Include-Elemente
- {{insert_article::*}}
- {{insert_content::*}}
- {{insert_module::*}}
- {{insert_form::*}}
- {{file::xyz.php}}
- ...
{{insert::tags}}
=Textersetzung
Insert Tags
A box in a box
- {{insert_form::{{post::numform}}}}
=> {{insert_form::7}}
=> Form #7 wird dargestellt
Insert Tags
A box and a box in a box
- {{{{post::type}}::{{post::numform}}}}
=> {{{{post::type}}::7}}
=> {{insert_form::7}}
=> Form #7 wird dargestellt
{{insert::tags}}
Dos and Don'ts
Insert Tags
Konventionen
- {{
- „modul“
- ::
- name
- ggf. :: untername, ggf. :: unteruntername...
- }}
Insert Tags
Guter Stil
- {{email::*}}
- {{kunde::bereich::name}}
- {{kunde::bereich::ansprechpartner::vorname}}
Insert Tags
Naja, geht auch
- {{uppercase::email::*}}
- {{Äääh, verdammt nochmal!}}
- {{7::+::4}}
- {{7€ >= 4 Lira! (§7a)}}
- Rekursion
Insert Tags
InsertTags in der Programmierung auflösen
\Controller::replaceInsertTags('{{date}}');
Warum?
- z.B. um InsertTags in Mails zu nutzen
Insert Tags
Besondere InsertTags
{{iflng::en}}Your name{{iflng::de}}Ihr Name{{iflng}}
{{iflng::en}}Your name{{iflng::de}}Ihr Name{{iflng}}
Insert Tags
Do it yourself!
- Modul (3.5) / Bundle (4.x) anlegen
- Klasse anlegen mit Hook-Methode
- Hook registrieren
// config.php
$GLOBALS['TL_HOOKS']['replaceInsertTags'][] = array('MyClass', 'myReplaceInsertTags');
// MyClass.php
public function myReplaceInsertTags($strTag) {
if ($strTag == 'mytag') {
return 'mytag replacement';
}
return false;
}
Just one more thing...
Flags
- {{mymodule::mytag|strtolower}}
Weitere Flags
- strtoupper
- ucfirst / lcfirst
- nl2br
- strrev
- encodeEmail
- readable_size
- absolute (seit Contao 4.5)
siehe https://docs.contao.org/books/manual/4.4/de/04-inhalte-verwalten/inserttags.html
Hook,
ich habe gesprochen.
Hooks allgemein
Mit Haken und Ösen
- Hooks sind erlaubte Einsprungstellen ins System.
- „Das System“ legt fest, welche Hooks es gibt, mit welchen Parametern sie aufgerufen werden und was mit den Rückgabewerten passiert.
- Hooks erlauben individuelle Funktionalität bei Ereignissen.
- Auch Erweiterungen / Bundles können Hooks bereitstellen.
Beliebte Hooks
- activateAccount
- activateRecipient
- closeAccount
- createNewUser
|
- generateBreadcrumb
- generatePage
- getSearchablePages
- postLogin / postLogout
- processFormData
|
siehe https://docs.contao.org/books/api/extensions/hooks/
Code-Skelett - bis Contao 4.4
(ab 4.5 zusätzlich tagged services)
// config.php
$GLOBALS['TL_HOOKS'][<HookName>][] = array(<MyClass>, <myMethod>);
// <MyClass>.php
public function <myMethod>($params) {
....
return $res;
}
Typische Anwendungsfälle
- Bearbeitung von Formulardaten
- Eigene Insert-Tags auflösen
trilobit GmbH