Das Designerhandbuch erklärt den Umgang mit HTML-Vorlagen (Templates) und erläutert die Verwendung der Smarty Template Engine.
Dieses Handbuch in erster Linie für Webdesigner ausgelegt, daher verzichten wir auf eine Einführung in die Programmierung von HTML-Seiten und setzen ein entsprechendes Basiswissen voraus. Bei Fragen zu (X)HTML, Javascript oder CSS empfehlen wir den Besuch auf z.B. SelfHTML bzw. CSS4you oder verweisen auf entsprechende Fachliteratur.
Wie integriere ich ein fertiges Design in das CMS?
Das Haupttemplate
beinhaltet den kompletten Aufbau und das Design Ihrer Website. Dieses ist im ersten Schritt eine einfache HTML-Datei, die Stylesheets und Bilder verwendet. Es wird bei jedem Aufruf der Seite geladen und bildet quasi das Grundgerüst ihrer Website.
Die Template-Bereiche
sind variable Bereiche im Haupttemplate wie z.B. linke Navigation, Inhaltsbereich, rechte News-Spalte usw.. Diese Bereiche sollen sich ändern, je nach dem, auf welcher Seite der Besucher sich gerade befindet.
Die Platzhalter
dienen zum gezielten Platzieren von Informationen in Ihrem Auftritt. Über ein Skript können diese nach Belieben befüllt und auf der Website nach Wunsch positioniert werden.
Die Seitentypen
bestimmen, wie eine Seite im Frontend aussehen hat. So kann z.B. eine Startseite eine Auflistung von News beinhalten, wobei eine Standardseite nur Titel, Kurzbeschreibung und den eigentlichen Inhalt ausgeben soll. Zwar bleibt das grobe Grundgerüst des Auftritts fest, die einzelnen Bereiche können jedoch unterschiedlich aussehen. Das jeweilige Erscheinungsbild wird in sogenannten "Templates" einmal pro Seitentyp (Vorlage) festgelegt.
Zusammengefasst:
Eine der Stärken vom EGOTEC® CMS ist die klare und schlichte Trennung von Design und Inhalt.
Für jeden Seitentypen kann der Designer ein individuelles Layout (Template) entwerfen; dieses kann anschließend für beliebig viele Seiten verwendet werden. Zum anderen können Redakteure die Inhalte der einzelnen Seiten mit EGOTEC® einpflegen, ohne sich über das Layout Gedanken machen zu müssen. Damit sind für den Redakteur auch keinerlei Programmierkenntnisse erforderlich.

Templates
Templates bestimmen das Erscheinungsbild eines Seitentyps.
Alle Dateien, die das Aussehen der Website betreffen, liegen immer zentral im skin-Verzeichnis. Verwendet der Mandant als Design "demo", finden Sie dazugehörende Templates im Verzeichnis skin/demo/.
Die Verzeichnisse "page" und "contact" stehen für entsprechende Seitentypen. Sie beinhalten das seitentypspezifische Template (body.html).
Wie Sie einen neuen Seitentyp erstellen, entnehmen Sie bitte dem Entwickler-Handbuch.
Das Haupttemplate liegt in skin/MANDANT/index.html und ist das zentrale Grundgerüst der Website, sprich: Das globale Design.
Hier bestimmt der Designer, wie die Webseite aussieht und aufgebaut ist, welche Spalten verfügbar sind und wo welcher Inhalt angezeigt werden sollen.
Das Haupttemplate wird bei jedem Seitenaufruf geladen.
| Logo | Hauptnavigation |
| Navigation |
Inhalt |
| Fusszeile |
Die blauen Bereiche würden dabei über die index.html definiert werden, da sie für alle Seiten mehr oder weniger identisch sind.
Der grüne Bereich wird je nach Seitentyp durch die dazugehörige body.html definiert.
Bestandteile der Webseite, die sich auf allen Seiten wiederholen, sollten ebenfalls in die index.html eingebunden werden, um so ein einheitliches Design zu gewährleisten. Für ein einheitliches Design sorgt auch eine CSS Style Sheet Datei, die man in der index.html einbindet. Wir bevorzugen die Einbindung von Style Sheet Definitionen als Datei, da die so erzeugten HTML-Seiten schlank bleiben.
Damit ein seitentypspezifisches Template eingebunden werden kann, stellt das System automatisch die Variable {$typeTemplate} zu Verfügung. Dieser Platzhalter muss im Haupttemplate an gewünschter Stelle positioniert werden.
Eine einfache index.html könnte wie folgt aussehen:
Die Seite lässt sich im Editor einfach nicht speichern.
Wie jede normale HTML-Datei verfügt auch die index.html über einen Kopf-Bereich in dem verschiedene Meta-Daten hinterlegt werden können.
EGOTEC bietet einige Platzhalter an, die speziell für den HEAD-Bereich gedacht sind.
Ein vollständiger HEAD-Bereich könnte dann wie folgt aussehen :
In diesem Beispiel wird das Titel-Feld der aktuellen Seite auch als Titel des Browser verwendet. Hier sind natürlich andere Kombinationen möglich.
Außerdem wird an dieser Stelle geprüft, ob auf dem Meta-Reiter (im Administrationsbereich der Seite) das Feld "Titel im Browser" befüllt wurde. Falls ja, wird dieser Titel verwendet.
Der content-type sollte auf jeden Fall auf text/html; charset=UTF-8 gesetzt werden, da EGOTEC komplett auf UTF-8 ausgelegt ist.
Die Sprache der dargestellten Seite kann dynamisch über {$site->language} gesetzt werden. Bei mehrsprachigen Auftritten wird damit immer die korrekte Sprache gesetzt.
Die Beschreibung der Seite werden die Platzhalter {$site->site.description} und {$page->extra.meta_descr} verwendet.
Der Platzhalter {$site->site.description} entspricht dabei der global hinterlegten Beschreibung (unter: Verwaltung->Konfiguration->Mandant->Allgemein).
{$page->extra.meta_descr} hingegen zeigt die Beschreibung auf dem Meta-Reiter der jeweiligen Seite.
Je nach Bedarf können Sie an dieser Stelle gerne beide Platzhalter kombinieren (siehe Beispiel) oder über eine {if}-Kontrollstruktur nur einen verwenden
Die Schlüsselwörter verhalten sich ähnlich wie die Beschreibung der Seite. Auch diese können aus den speziellen Schlüsselwörtern der Seite und/oder aus den globalen Einstellungen generiert werden.
Das Aktualisierungs-Datum der Seite kann leicht über einen Platzhalter (Datum der letzten Änderung) positioniert werden.
Die Anweisungen für Suchmaschinen-Robots können aus den Einstellungen des Mandanten übernommen werden. Die enstprechende Seiteneinstellung aus dem Meta-Reiter kann über den Platzhalter {$page->extra.meta_robots} verwendet werden.
Über den Platzhalter {$generator} wird die aktuelle Version von EGOTEC als Generator der Webseite angeben.
Über diese Zeile wird ein individuelles FAVICON eingebunden. Falls Sie dazu Grafiken verwenden möchten, die sich innerhalb des EGOTEC-Pfades befinden, sollten Sie dir URL unbedingt mit {$url_dir} beginnen lassen.
Der Pfad zu CSS-Dateien besteht aus {$url_dir} dem URL-Pfad, und {$site->skin}, dem aktuell verwendeten Design des Mandanten. Bitte beachten Sie weiterführende Hinweise zu Stylesheets.
Der Platzhalte für typenspezifische CSS bzw. Javascript Dateien wird von EGOTEC automatisch befüllt. Näheres zu diesem Platzhalter finden Sie auf der Seite {include_mudule_files}
Damit ein seitenspezifisches Template im Frontend angezeigt wird, muss es erst im Haupttemplate eingebunden werden:
Über den Platzhalter {$typeTemplate} wird geprüft, ob für die aktuelle Seite ein typenpezifisches Template existiert. Falls dies der Fall ist, wird dieses an der entsprechenden Stelle eingebunden. Andernfalls wird lediglich der Inhalt der Seite dargestellt.
Um eine identische Darstellung im Frontend und im WYSIWYG-Editor zu gewährleisten, sollten Sie den Inhaltsbereich mit einem <div id="inhalt"> umschließen und die CSS-Styles entsprechend an dieser ID ausrichten.
Für jeden Seitentyp kann ein eigenes Aussehen bestimmt werden.
Das Template für einen Seitentyp befindet sich stets unter skin / DESIGN / SEITENTYP / body.html.
Es wird über einen entsprechenden Platzhalter in das Haupttemplate eingebunden und beinhaltet alle Ausgaben und besondere Funktionalitäten für den entsprechenden Seitentyp. Hier kann z.B. angegeben werden, dass alle Unterseiten in einer Liste mit jeweils Titel, Kurzbeschreibung und Verlinkung (News/Liste) ausgegeben werden sollen.
Die einfachste Variante einer solchen body.html könnte wie folgt aussehen:
Hier wird lediglich der Titel, die Kurzbeschreibung und der Inhalt ausgegeben. Dabei können Sie Platzhalter an beliebiger Stelle im Template positionieren.
Nähere Informationen zum Erstellen von Seitentypen und deren Namensgebung finden Sie im Entwicklerhandbuch
Weil die "body.html"-Datei nur Teil des Haupttemplates ist und in diesem eingebunden wird, benötigen Sie weder einen <html>, noch <head> oder <body>-Tag.
Es wird sehr empfohlen alle verwendeten CSS-Anweisungen in eine (oder mehrer) externe Datei auszulagern. Diese kann dann in dem head-Bereich des Haupttemplates der Website eingebunden werden. Das hat den entscheidenden Vorteil, dass Änderungen nur an dieser zentralen Stelle durchgeführt werden.
Mit dieser Zeile binden Sie ein externe CSS-Datei ein:
Zusätzliche Styles pro Seitentyp
Wie Sie für einen bestimmten Seitentyp eine weiterführende CSS-Datei einbinden können, finden Sie auf der Onlinehilfe unter {include_module_files}.
Die style.css ist die Hauptdatei für Stylesheets. Hier werden alle CSS-Klassen und Definitionen gesammelt.
Gerne können Sie auch weitere CSS-Dateien über diese Datei verlinken:
Alle diese Stylesheet-Angaben sind gewöhnlich durch den Designer/Templateentwickler fest vorgegeben. Ein Redakteur hat auf diese Einstellungen keinen Einfluss.
Diese CSS und darin verlinkte CSS-Dateien werden im WYSIWYG-Editor verwendet. Achten Sie also darauf, dass alle im Design verwendeten Styles in dieser style.css-Dateie stehen oder zumindest die entsprechende CSS-Datei hier verlinkt wird. Es ist darauf zu achten das im WYSIWYG-Editor das DIV #inhalt verwendet wird.
Verwenden Sie folgende CSS-Anweisung in der style.css um nach einer Suche die Suchtreffer hervorzuheben.
Gerne können auch eigene Style-Angaben für die Formatierung verwendet werden.
Über die span.css kann man einem Redakteur einige vorgefertigte Textformatierungen bereit stellen.
Diese kann er im WYSIWYG-Editor über das Dropdown-Menü "CSS-Style" einem Textelement bzw. Absatz zuweisen.
Folgende "CMS-Installationspfad/skin/Mandant Name/span.css"
entspricht dann im Editor folgender Auswahlmöglichkeit:

Wie Styles einzelnen Textbausteinen zugewiesen werden können wird im Benutzerhandbuch auf folgender Seite beschrieben.
Dies in der span.css festgelegten Klassen müssen in der style.css definiert werden.
Die table.css dient ebenfalls dazu dem Redakteur im WYSIWYG-Editor vorgefertigte Formatierungen bereit zu stellen. Allerdings sind die hier definierten Klassen für die Formatierung von Tabellen gedacht (vgl. "Einfügen und Bearbeiten einer Tabelle" im Benutzerhandbuch).
Dies in der table.css festgelegten Klassen müssen in der style.css definiert werden.
Die img.css dient dazu dem Redakteur im WYSIWYG-Editor vorgefertigte Formatierungen bereit zu stellen. Allerdings sind die hier definierten Klassen für die Formatierung von Bildern gedacht (vgl. "Einfügen von Bildern" im Benutzerhandbuch).
Dies in der img.css festgelegten Klassen müssen in der style.css definiert werden.
Einige Richtlinien, auf die ein Designer bei der Erstellung der CSS-Anweisungen achten sollte:
Wiederholende Elemente sind z.B. Menüpunkte und ähnliches.
Bereiche die sich vom HTML-Code ähnlich sind, und sich quasi nur durch den dargestellten Text unterscheiden.
So fern sich einige CSS-Klassen ausschließlich auf bestimmte Tag-Typen beziehen sollen, ist es ratsam, der Class-Definition diesen Tag mit einem Punkt voranzustellen.
So könnte man bei den Definitionen in der img.css beispielsweise auch img.roter_Rahmen verwenden um sicher zu stellen, dass diese Anweisung nur bei Bildern interpretiert wird.
Um eine bestmögliche Darstellung im WYSIWYG-Editor zu erzielen sollten Sie nach Möglichkeit darauf verzichten eigene CSS-Klassen zu verwenden.
Sinnvoller ist es die HTML-Tags selbst zu beschreiben. Über verschachtelte Definitionen können Sie die Klassen dabei auf den Inhaltsbereich und den Editor begrenzen.
Die folgende CSS-Definition würde z.B. auf alle <p>-Tags im Editor angewandt werden. Um im Frontend die gleiche Formatierung zu erreichen, muss der Inhaltsbereich in der Index.html dementsprechend von einem Bereich mit der ID inhalt eingeschlossen sein. (vgl. "Der BODY-Bereich" im Designhandbuch)
Zusätzlich zu der Ausgabe als HTML-Dateien unterstützt EGOTEC auch Templates für weitere Medien.
Standardmäßig besteht z.B. die Möglichkeit für eine Druckansciht ein abgeändertes Design zu verwenden.
Im Zusammenhang mit dem PDF-Modul können auch Designs zur PDF-Generierung erstellt werden.
Für dir Druckansicht über {print_url} verwendet EGOTEC als Basis ebenfalls HTML-Templates.
Diese können entweder global für einen Mandanten oder speziell für einen Seitentyp erstellt werden. In der Regel werden Elemente wie Navigation, rechte Spalten usw. in Drucktemplates entfernt um die Ansicht auf wichtigen Inhalt zu beschränken.
Falls sich im entsprechenden Design-Verzeichnis eines Mandanten eine Datei index.print.html befindet, wird diese statt der index.html in der Druckansicht verwendet.
Eine solche index.print.html verzichtet dabei meistens auf die Navigationen, und konzentriert sich stärker auf den eigentlichen Inhalt der Seite.
Falls notwendig können auch für body.html-Dateien durch spezielle Templates die Druckansicht ersetzen. Diese Dateien müssen haben die Bezeichnung body.print und befinden sich jeweils neben der body.html im gleichen Seitentyp-Verzeichnis.
Für dir PDF-Ansicht über {pdf_url} verwendet EGOTEC als Basis ebenfalls HTML-Templates. Diese werden aber für die PDF-Ansicht entsprechend vereinfacht.
Falls im entsprechenden Design-Verzeichnis eines Mandanten eine Datei namens index.pdf.html oder index.htm.html befindet wird diese statt der index.html in der PDF-Ansicht verwendet.
Eine solche index.pdf.html verzichtet dabei meistens auf die Navigationen, und konzentriert sich stärker auf den eigentlichen Inhalt der Seite.
Falls notwendig können auch für body.html-Dateien durch spezielle Templates für die PDF-Ansicht ersetzen.
body.pdf.html bzw. index.pdf.html
body.htm.html bzw. index.htm.html
Für die PDF-Generierung setzen wir das externe Tool htmldoc ein. Diesem sind bzgl. der Darstellungsmöglichkeiten einige Grenzen gesetzt.
Näheres dazu entnehmen Sie bitte der Dokuementation von htmldoc (http://www.easysw.com/htmldoc/). Auch ist es Möglich html2ps einzusetzten.
Erzeugen eines InDesign Dokuments mittels EGOTEC CMS:
1. Man muss mittels Adobe InDesign eine Vorlage erzeugen und diese dann als Indesign Interchange Format exportieren.

2. Danach muss man in der erzeugten Datei unter Umständen ein paar {literal} und {/literal} Tags setzten.


3. Danach speichert man die Datei im Skin Verzeichnis :

4. Dann kann man sich das ganze mit gefülltem Inhalt runterladen:

5. Und im Adobe InDesign öffnen:

Falls verlinkte Bilder aus dem Multimediabereich gesondert dargestellt werden sollen, kann dies über die view_image.html gesteuert werden.
Die view_image.html muss sich im Skin-Verzechnis des Desktop-Mandanten befinden. Zusätzlich muss unter Verwaltung->Konfiguration->Multimedia-Mandant->Administration Reiter Verschiedenes die Checkbox bei "Links auf Bilder für Popups erweitern" aktiviert werden. Das können Sie sich Hier anschauen.
Eine solche view_image.html-Datei könnte z.B. wir folgt aussehen :
Im Gegensatz zu den seitenspezifischen Templates sollte die view_image.html über einen HEAD- und BODY-Bereich verfügen.
Sie können mit {t}{/t} recht einfach einzelne Textbausteine übersetzen.
Dazu stehen Ihnen im Verzeichnis skin/SkinName/locale für jede verfügbare Sprache Übersetzungsdateien zur Verfügung.
Vorbereitungen
Legen Sie in skin/mandant/
einen ordner mit dem namen "locale" an
in diesem Order wird für jede gewünschte Sprache ein Ordner mit dem Länderkürzel als Namen angelegt, innerhalb der Sprache kommt eine translation.ini
Beispiel
Diese Seite als PDF Dokument anzeigen. = show this page as PDF
Diese Seite ausdrucken. = print this page
Download = download
Drucken = print
Impressum = imprint
Zur Unterstützung der dynamischen Inhaltsgestaltung verwendet Egotec über verschiedene Erweiterungen. Diese Erweiterungen basieren auf der Smarty Template Engine. Im Rahmen dieses Handbuches werden die häufigsten dieser Erweiterungen aus Sicht des Designer beschrieben.
Auf den Folgenden Seiten bekommen Sie informationen über den Einsatz von Smarty-Plugins
Eine Einführung und Informationen zur grundlegenden Syntax von Smarty finden Sie auf der Smarty-Homepage.
Ein Smarty-Kommentar beginnt mit {* und endet mit *}. Alles was sich zwischen diesen Zeichen befindet, wird in der Ausgabe ignoriert, d.h. auch nicht in der Quelltextansicht der Seite angezeigt.
Die einfachste Erweiterung des HTML-Codes sind sogenannte Platzhalter.
Wie auch alle anderen Erweiterungen beginnen Platzhalter mit { und enden mit }. Sie werden je nach anzuzeigender Seite mit unterschiedlichen Inhalten gefüllt.
Zwischen den Platzhaltern steht der Variablenname, beginnend mit einem $.
Smarty bietet zusätzlich zu den Platzhaltern auch noch die Möglichkeit, konstante Werte aus Konfigurationsdateien einzulesen. Näheres dazu ist der Smarty-Dokumentation zu entnehmen.Mit Hilfe der {debug}- Funktion können Sie sich die möglichen Platzhalter zu einzelnen Templates jederzeit anzeigen lassen.
Der Platzhalter {$url_dir} beinhaltet die URL zu Ihrer CMS-Installation.
Er wird in der Templates verwendet um Pfade zu Bildern, Skripten oder CSS-Dateien anzugeben:
Im Platzhalter ist am Ende schon ein "/"-Zeichen mit enthalten. Setzten Sie daher nach dem Platzhalter KEIN "/"-Zeichen mehr (siehe Beispiel).
Bei jedem Seitenaufruf wird vom System die aktuelle Seite als Page-Objekt in Smarty bereit gestellt. Mit dem Platzhalter {$page} können gespeicherte Werte und Eigenschaften direkt im Template ausgegeben werden.
| Platzhalter |
Beschreibung |
| {$page->field.name} | Name der aktuellen Seite |
| {$page->field.title} |
Titel der aktuellen Seite |
| {$page->field.short} |
Kurzbeschreibung |
| {$page->field.content} |
Inhalt |
| {$page->field.a_date} |
Erstellungsdatum |
| {$page->field.c_date} |
Änderungsdatum |
| {$page->field.id} |
ID der aktuellen Seite |
| {$page->field.type} | Interner Seitentyp |
Mit {$page->extra.variablenname} kann auch auf Werte im extra-Feld zugegriffen werden, sofern diese Werte vorhanden sind.
Der {$site} Platzhalter steht bei jeden Seitenaufruf automatisch zu Verfügung. Er beinhaltet das Objekt des aktuellen Mandanten.
| Platzhalter |
Beschreibung |
| {$site->name} |
Name des aktuellen Mandanten |
| {$site->skin} |
Verwendetes Design des aktuellen Mandanten |
| {$site->language} | Die Sprache des Mandanten |
| {$site->site.default_skin} |
Das Standard-Design des Mandanten |
Über das Array {$site->site} können allgemeine Einstellungen (aus dem Adminbereich) wie Standardsprache, verfügbare Sprachen oder E-Mail Adresse des Webadministrators ausgegeben werden. Alle verfügbaren Werte können über die {debug}-Funktion eingesehen werden.
Mit Hilfe von Smarty Blöcken (und Kontrollstrukturen) können Sie die Darstellung der Seite steuern.
Im Prinzip sind Smarty-Blöcke nichts anderes als Smarty-Funktionen mit dem wichtigen Unterschied, dass sie mit einem schließenden Tag beendet werden müssen.
Die gebräuchlichsten werden im Folgenden beschrieben.
Mit Hilfe von {if}{elseif}{else}{/if} -Anweisungen können Sie bestimmte Bereiche eines Templates von Bedingungen abhängig machen. So ist es z.B. möglich je nach Typ der Seite unterschiedliche Bilder oder einen alternativen Begrüßungstext einzublenden.
{if}-Statements in Smarty erlauben die selbe Flexibilität wie in PHP. Eine Liste der erlaubten Operatoren finden Sie im Smart- Onlinehandbuch hier.
Mit Hilfe von {foreach}{/foreach} können Sie nacheinander alle Einträge eines Arrays durchlaufen.
Weitere Informationen zu {foreach} entnehmen Sie bitte den Smarty-Handbuch
{html_code}{/html_code} sorgt dafür, dass HTML-Tags die in dem entsprechenden Bereich stehen, zusammen mit HTML-Tags ausgegeben werden.
(der komplette Bereich wird mit <pre></pre> umschlossen)
Dadurch können Sie z.B. Beispiel-HTML-Code recht einfach in einem Template anzeigen lassen.
Dies ist keine Standard-Funktion von Smarty, der Aufruf steht Ihnen nur bei EGOTEC zur Verfügung. In der Smarty-Dokumentation werden Sie keine weiterführenden Hinweise zu dieser Funktion finden.
Der {strip}-Block entfernt alle Leerzeichen und Zeilenumbrüche, die innerhalb des {strip} und {/strip}-Tags liegen.
Oft wird die Ausgabe des erzeugten HTML im Browser durch letztere negativ beeinflusst. Daher kann diese Funktion an dieser Stelle Abhilfe schaffen.
Dies ist keine Standard-Funktion von Smarty, der Aufruf steht Ihnen nur bei EGOTEC zur Verfügung. In der Smarty-Dokumentation werden Sie keine weiterführenden Hinweise zu dieser Funktion finden.
Der {t}-Block vereinfacht Ihnen das Erstellen von mehrsprachigen Seiten. Texte, die innerhalb eines {t}{/t} -Blocks stehen, werden an Hand von Übersetzungsdateien automatisch in die gewählte Sprache übersetzt. Näheres zu den Übersetzungsdateien und wie diese gepflegt werden finden Sie hier.
Ein typischer Aufruf des {t}{/t}-Blockes sieht wie folgt aus :
Beachten Sie dabei, dass zwischen den {t}{/t}- Tags weder weitere Template-Platzhalter, noch HTML-Tags auftauchen sollten. Lediglich einfacher Text.
Dies ist keine Standard-Funktion von Smarty, der Aufruf steht Ihnen nur bei EGOTEC zur Verfügung.
In der Smarty-Dokumentation werden Sie keine weiterführenden Hinweise zu dieser Funktion finden.
Mit Hilfe von {literal}{/literal} können Sie Bereiche des Templates von der Interpretation durch Smarty ausschließen. Smarty ignoriert damit alles, was zwischen {literal} und {$literal} steht. Dies ist vor allem für Javascript- oder andere Blöcke nützlich, die geschwungene Klammern verwenden (Ohne den {literal}-Block würde Smarty versuchen die geschweiften Klammern der Javascript-Funktion zu interpretieren, was zu einem Fehler führen würde).
Diese Funktion speichert den komplette Bereich, welcher durch die {cache}-Tags umschlossen wird. Bei variablen Inhalten ist daher auf den korrekten Einsatz dieser Funktion zu achten.
Smarty-Funktionen sind wichtige Werkzeuge, die Ihnen die Arbeit mit Templates erleichtern. Der entscheidende Vorteil: Sowohl der Aufruf der Funktion als auch die weitere Verarbeitung der Funktionsergebnisses können direkt im Template durchgeführt werden.
Die wichtigsten Funktionen werden im folgenden beschrieben.
Die folgenden Funktionen sind nicht Standard von Smarty, der Aufruf steht Ihnen nur bei EGOTEC zur Verfügung. In der Smarty-Dokumentation werden Sie keine weiterführenden Hinweise zu diesen Funktion finden.
"url" oder "action" muss gesetzt sein, jedoch darf nur einer der beiden Parameter verwendet werden. Wenn Sie ein page Objekt zur Verfügung haben, verwenden Sie bitte page= als Parameter und nicht id.
Wenn das Formular abgeschickt wurde, wird überprüft ob das CAPTCHA gelöst wurde und dementsprechend eine Meldung ausgegeben.
Der Aufruf von {debug} erfolgt üblicherweise möglichst am Ende des Templates.
Vergessen Sie nicht, alle {debug} Aufrufe vor der Liveschaltung wieder zu entfernen. Andernfalls werden die Debug-Ausgaben auch weiterhin angezeigt.
Existiert bereits ein entsprechender Eintrag im Extra-Bereich wird er überschrieben.
Es können nur Seiten geändert werden, die direkt zum aktuellen Mandanten gehören. Media-Dateien lassen sich z.B. mir {extra_push} nicht bearbeiten
Achtung: Wenn Sie die Werte für name_text und name_hidden ändern, müssen Sie diese auch {check_captcha} mitteilen.
Die Captcha-Funktion benötigt das GD-Lib Modul mit integrierter Free-Type Bibliothek (http://de2.php.net/imagettfbbox).
Über {check_captcha} kann geprüft werden, ob die Eingabe korrekt war.
Erzeugt ein CAPTCHA mit roter Schriftfarbe und grünen Linien und speichert den HTML-Code für das erzeugte Bild und für das Eingabefeld in der Variablen html_code
Erzeugt ein CAPTCHA und speichert den HTML-Code für das erzeugte Bild in der Variablen code_img und das für das Eingabefeld in code_txt.
Weitere Möglichkeiten zur Anpassung werden mit den CSS Klassen captcha_user, captcha_img und captcha_reload angeboten.
Diese Funktion berücksichtigt Freigabe-Daten, Berechtigungen und den Aktiv-Haken.
Diese Funktion berücksichtigt Freigabe-Daten, Berechtigungen und den Aktiv-Haken.
Diese Funktion übernimmt beim Auslesen der Seiten leider keine variable Sortierung aus dem Administrationsbereich
(Reiter "Navigation => Sortierung: variabel").
Möchte man die Schlagworte einzeln ausgegeben, wird empfohlen, die Liste Skriptseitig über die explode-Funktion in ein Array abzulegen und an Smarty zu übergeben.
Diese Funktion berücksichtigt Freigabe-Daten, Berechtigungen und den Aktiv-Haken.
Diese Funktion berücksichtigt Freigabe-Daten, Berechtigungen und den Aktiv-Haken.
Diese Funktion berücksichtigt Freigabe-Daten, Berechtigungen und den Aktiv-Haken.
Diese Funktion berücksichtigt Freigabe-Daten, Berechtigungen und den Aktiv-Haken.
Diese Funktion berücksichtigt Freigabe-Daten, Berechtigungen und den Aktiv-Haken.
In der Regel wird dieses Plugin in der ersten Zeile eines Dialogs eingebunden.

Diese Plugin ist erst ab EGOTEC 5 verfügbar.
Es wird im Seitentyp-Verzeichnisse nach 2 Dateien durchsucht :
{include_module_files} sollte unbedingt im HEAD-Bereich der index.html eingebunden werden
Der Pfad geht dabei immer vom jeweiligen SKIN-Verzeichnis aus.
EGOTEC stellt automatisch einen Platzhalter {$typeTemplate} zur Verfügung. Dieser enthält immer den Template-Pfad zur aktuellen Seite.
Smarty Plugin für den Adminbereich. Einfache Erzeugung von Eingabefeldern.
Ausgabe:
wir erstellen zuerst eine HTML-Datei
jede HTML Datei besitzt 2 Bereiche
Achten Sie darauf, dass das Formular auf jeden Fall den Namen extra bekommt
<div> und <table> sind für die einheitliche Gestaltung optionall
Ab Version 5 werden bei Seiten die extra-Felder automatisch gespeichert und geladen.
Es muss nur die unload_extra() Funktion die do_unload bzw. do_unload_extra Funktion aufgenommen werden.
Wenn Sie Input-Plugins an anderen Stellen verwenden, z.B. auf einem Konfigurationsreiter in den Globalen Einstellungen können die Felder nicht automatisch abgespeichert werden.
Die Inhalte der Input-Felder können in dieser Version einheitlich mit den Funktionen set_input_value() und get_input_value() geladen und gespeichert werden.
In diesem Teil werden die Werte beim Speichern in die DB geschrieben
Hier werden, wenn vorhanden, gespeicherte Werte an das Formular übergeben
Mit Dojo generierte Input-Felder können nicht vollständig über die Eigenschaften ihrer ursprünglichen HTML Objekte manipuliert werden. Hierfür ist es manchmal notwendig das dazugehörige Dojo Objekt zu ermitteln und dieses dann zu manipulieren. Die Funktion hierfür ist get_input_object(). Übergeben wird der Name des Input-Feldes.
Soll ein Attribut geändert werden, verwendet man die attr() Funktion. Nur so aktualisiert Dojo seine Objekte.
Auslesen von Eigenschaften ist hingegen wie gewohnt machbar. Eigenschaften oder Arrays wie checked, selected, options, usw stehen nun auch Verfügung.
Die Funktion liefert als Ergebnis entweder true (1) oder false (0) zurück.
{in_path} eignet sich besonders für mehrstufige baumartige Navigationsstrukturen, welche je nach Position der Besuchers an entsprechender Stelle aufklappen. Dabei wird einmalig über {get_path} der aktuelle Pfad ermittelt und in jeder Navigationsebene geprüft, ob die Seiten im Pfad liegen. Falls ja, werden weiter Kinder ausgelesen.
Weitere Parameter und Beispiele entnehmen Sie bitte der Smarty Dokumentation auf smarty.net
Rückgabewert ist true oder false.
Diese Funktion wird nicht weiter unterstützt und wurde durch die Funktion {nav} ersetzt.
{nav_url} kann nur innerhalb eines {nav}{/nav} Blocks verwendet werden.
Diese Funktion berücksichtigt Freigabe-Daten, Berechtigungen und den Aktiv-Haken.
Diese Smarty-Plugin ist in EGOTEC 5 nicht mehr verfügbar. Es wird durch das Plugin help ersetzt.
Diese Funktion berücksichtigt Freigabe-Daten, Berechtigungen und den Aktiv-Haken.
Näheres zu Druck-Designs erfahren Sie im entsprechenden Kapitel des Designerhandbuchs
Sortiert nach einem Wert im Extra Feld
Die letzten 10 eingetragenen Events sortiert nach deren Enddaten anzeigen.
Ein String wird abgeschnitten und der Teilstring bleibt XHTML konform.
Als Rückgabewert erhält man ein Array gespeichert in der unter var angegebenen Variable mit folgenden Schlüsseln.
Wenn Sie auf einer Portalseite die letzten Newseinträge auflisten wollen, diese aber nicht komplett dargestellt werden sollen. Stattdessen sollen diese ab einer gewissen Länge abgeschnitten werden und einen Link erhalten, der zum eigentlichen News-Eintrag weiterführt.
Eine Tag Cloud stellt die am meisten verwendeten Schlagwörter dar. Hierbei gilt standardmäßig: je größer ein Schlagwort dargestellt wird, desto öfters wird es verwendet. Ein Klick auf ein Schlagwort öffnet eine Auflistung aller Seiten deren dieses Schlagwort zugewiesen ist.
Weitere Informationen zur Verwendung von Schlagwörtern finden Sie in unserer Hilfe zum Schlagwortregister.
Die Tag Cloud verwendet eine Standard Formattierung und sieht zum Beispiel so aus:

Die hierfür verwendete CSS Datei kann pro Skin überschrieben werden. Hier wird empfohlen die originale CSS Datei zu kopieren und diese dann nach eigenen Vorstellungen anzupassen.
Die CSS Datei wird automatisch eingebunden sobald diese Funktion aufgerufen wird. In der Regel reicht es wenn die Funktion an der Stelle im HTML Code aufgerufen wird, an der die Tag Cloud angezeigt werden soll:
Der generierte HTML Code ist so aufgebaut, dass dieser leicht mit externen Javascript Plugins verwendet werden kann:
Um die für die Tag Cloud notwendigen Dateien einzubinden, ist im HEAD Bereich des Skins folgender Funktionsaufruf notwendig:
{init_tag_cloud}
Damit ein Klick auf ein Schlagwort die Liste der zugeordneten Seiten öffnen kann, muss es eine Seite mit dem Seitentyp Schlagwörter geben.
Diese Funktion ergänzt die aktuellen Felder um die neuen Werte. Bereits vorhandene Felder werden dabei überschrieben.
Variablen-Modifikatoren dienen dazu, den Inhalt eines Platzhalter zu bearbeiten, bevor dieser ausgegeben wird. Sie können auf alle Variablen angewendet werden.
Dazu hängen Sie einfach ein | (Pipe-Zeichen) und den Namen des Modifikators an die entsprechende Variable an. Können einem Modifikator noch Parameter mitgegeben werden, werden sie dem Modifikatorname angehängt und mit : getrennt.
In dem Beispiel wird ein Text gekürzt, sobald 15 Zeichen überschritten werden. In dem ersten Parameter kann die Anzahl der Zeichen bestimmt werden. Der zweite Parameter gibt die Zeichenfolge an, die nach 15 Zeichen erscheinen soll (in diesem Fall "..."). Auf diese Weise lässt sich z.B. auch ein Datum auf verschiedene Arten formatieren.
Näheres zu den Standard-Modifikatoren von Smarty können Sie der Smarty-Dokumentation entnehmen
Generell kann jede PHP-Funktion die Zeichenketten verarbeitet als Modifikator genutzt werden. Näheres hierzu finden Sie in der Smarty-Dokumentation
Dies ist keine Standard-Funktion von Smarty, der Aufruf steht Ihnen nur bei EGOTEC zur Verfügung. In der Smarty-Dokumentation werden Sie keine weiterführenden Hinweise zu dieser Funktion finden.
{max_image_width} kann nur auf Bilder angewendet werden, die aus dem MM-Bereich von EGOTEC kommen.
max_image_width durchsucht den jeweiligen Platzhalter nach Bildern aus dem Multimediabereich. Diese werden dann mit der übergebenen maximalen Breite verglichen, und notfalls entsprechend verkleinert.
Ein typischer Aufruf des max_image_width-Modifikators sieht wie folgt aus :
{$page->field.content|max_image_width:200}
Mit Hilfe des {capture}-Befehls von Smarty können Sie den Modifikator auch auf Bilder die direkt über das Template eingebunden werden anwenden.
{capture assign="bild"}
<img src="{page_url id=$bild_id media=1}">
{/capture}
{$bild|max_image_width:150}
Dies ist keine Standard-Funktion von Smarty, der Aufruf steht Ihnen nur bei EGOTEC zur Verfügung. In der Smarty-Dokumentation werden Sie keine weiterführenden Hinweise zu dieser Funktion finden.
{max_image_height} kann nur auf Bilder angewendet werden, die aus dem MM-Bereich von EGOTEC kommen
max_image_height durchsucht den jeweiligen Platzhalter nach Bildern aus dem Multimediabereich. Diese werden dann mit der übergebenen maximalen Höhe verglichen, und notfalls entsprechend verkleinert.
Ein typischer Aufruf des max_image_height-Modifikators sieht wie folgt aus :
{$page->field.content|max_image_height:200}
Mit Hilfe des {capture}-Befehls von Smarty können Sie den Modifikator auch auf Bilder die direkt über das Template eingebunden werden anwenden.
{capture assign="bild"}
<img src="{page_url id=$bild_id media=1}">
{/capture}
{$bild|max_image_height:150}
Dies ist keine Standard-Funktion von Smarty, der Aufruf steht Ihnen nur bei EGOTEC zur Verfügung. In der Smarty-Dokumentation werden Sie keine weiterführenden Hinweise zu dieser Funktion finden.
{scale_image} kann nur auf Bilder angewendet werden, die aus dem MM-Bereich von EGOTEC kommen
scale_image bildet eine Kombination von max_image_width und max_image_height .
Beim Aufruf von scale_image können Sie sowohl eine maximale Breite, als auch eine maximale Höhe angeben.
Ein typischer Aufruf des scale_image-Modifikators sieht wie folgt aus :
{$page->field.content|scale_image:100:100}
Der erste Parameter entspricht dabei der maximalen Bildbreite, der zweite Paramater der maximalen Bildhöhe.
Es ist dabei zwingend erforderlich beide Parameter anzugeben. Möchten Sie nur Höhe oder Breite definieren, sollten Sie statt {scale_image} besser {max_image_width} bzw {max_image_height} verwenden.
Mit Hilfe des {capture}-Befehls von Smarty können Sie den Modifikator auch auf Bilder die direkt über das Template eingebunden werden anwenden.
{capture assign="bild"}
<img src="{page_url id=$bild_id media=1}">
{/capture}
{$bild|scale_image:100:100}
Kürzt die Variable auf eine definierte Länge. Standardwert sind 80 Zeichen. Als optionaler zweiter Parameter kann eine Zeichenkette übergeben werden, welche der gekürzten Variable angehängt wird.
Weiter Informationen und Parameter dazu finden Sie in der Dokumentation auf Smarty.net.
Formatiert ein Datum in das gewünschte Format.
Weiter Informationen und Parameter dazu finden Sie in der Dokumentation auf Smarty.net.
Eine komplette Liste der verfügbaren Smarty Modifikatoren finden Sie unter http://www.smarty.net/manual/de/language.modifiers.php.
Wenn Sie eigene Smarty-Plugins bereitstellen möchten müssen Sie diese entweder in Ihrem Site-Verzeichnis (z.B.:site/SITENAME/plugins/smarty/) oder im var-Verzeichnis (z.B.:var/lib/plugins/smarty/) hinterlegen.
Bei einem Systemupdate (Einspielen einer neuen Version) werden CMS-fremde Dateien in lib und bin gelöscht.
Sie können auch globale Smarty-Plugins definieren.
Diese werden in "site/_global/plugins/smarty/" hinterlegt und können von allen Mandanten aus genutzt werden.
Informationen zum WYSIWYG - Vorlagenplugin (ehemals Blöcke)
Das Vorlagen Plugin für den WYSIWYG-Editor, ermöglicht es Ihnen, eine bestimmte HTML-Vorlage oder vordefinierten HTML-Code in den Editor einfügen.
Solche Blöcke können entweder speziell für jeden Mandanten oder global festgelegt werden.
Sie finden den Einfügen-Button
in der Toolbar des Editors.
Um einen neuen Block im WYSIWYG-Editor einzurichten, werden 2 neue Dateien im Verzeichnis skin/MANDANT/blocks/ erstellt:
Globale Blöcke können im Verzeichnis /skin/_global/blocks/ angelegt werden
Die Bezeichnung meinBlock müssen Sie durch den gewünschten Namen ersetzten
Die Datei mit "_desc.php" erhält die Beschreibung Ihres Blocks, z.B:
In die "meinBlock.html" fügen Sie den eigentlichen HTML-Code des Blocks ein:

Alle Dateien, die zu einem Block gehören, müssen immer den gleichen Namen besitzen.
Die Sortierung der Vorlagen erfolgt aufsteigend (A-Z).
Wenn man ein IMG-Node kopieren will, muss man zuerst das "src" Attribut setzten.
Der Internet Explorer setzt sonst alle anderen Attribute auf eine Standardeinstellung zurück.
Wird im Internet Explorer mit Hintergrundbildern gearbeitet, so tritt manchmal ein unerwünschstes (und störendes) Flackern auf.
Mit JavaScript lässt sich diesem Effekt ein wenig entgegenwirken.
Folgender Befehl bewirkt, dass die Bilder im IE Cache gelagert werden und somit schneller abgerufen werden:
document.execCommand('BackgroundImageCache', false, true);
Achten Sie bitte bei der Vergabe von Variablennamen darauf, dass ein Reiter im Adminbereich über verschiedene Template-Quellen (globale Anpassung, Seitentyp Anpassungen) gefüllt werden kann.
Verwenden Sie daher z.B. für "var f = document.forms['extra'] " nicht immer die Variable "f".
wie man Listensymbole, die mit der Eigenschaft list-style-image eingebunden wurden, positionieren kann.
Hier ein Beispiel zur Erklärung:
<html>Das Symbol (pic.gif) hat oberhalb einen 4 Pixel-großen transparenten Rand, damit es im IE runterrutscht.
Sollten Sie für das Layout Ihrer Webseite auf Yaml zurück greifen, kann es in einigen Bereichen des CMS zu Einschränkungen kommen.
Dieses Problem tritt nur beim Einsatz des WYSIWYG-Editors aus Version 4 auf.
In der zentralen base.css-Datei von Yaml werden etliche Browser Resets gesetzt die für gleiche Ausgangsbedingungen für alle Browser sorgen sollen.
Eine dieser Anweisungen sieht wie folgt aus :
Dadurch werden sämtliche Innen- und Außenabstände aller HTML-Elemente auf Null gesetzt.
Leider interpretieren einige Browser diese Anweisung dann stärker als die in unserem Editor gesetzten Abstände bei Bildern.
Diese Funktion wird dann unter Umständen nicht mehr korrekt ausgewertet.
Sie können das Problem umgehen, indem Sie auf die direkte Eingabe von Abständen verzichten und statt dessen in der img.css entsprechende Klassen für Bilder definieren.
Mit einem !important ist es möglich, die Yaml-Anweisungen zu überschreiben.
Hier finden Sie gebrauchsfertige Vorlagen und Problemlösungen zu verschieden Template-Umsetzungen auf die Sie wahrscheinlich während der Template-Entwicklung stoßen werden.
Ein zentrales Skript, über welches komplexe Navigationsstrukturen über Smarty erstellt werden können.
Dieses Skript verwendet die {nav}-Funktion und kann nach Belieben für Projekte angepasst und ändern werden.
Ein recht häufiges Anwendungsbeispiel dürfte eine Navigation über mehrere Ebenen sein.
Ein entsprechender Code-Abschnitt könnte wie folgt aussehen:
<ul id="navmenu">
{nav id=$site->rootId item=ebene1}
<li><a href="{nav_url}">{$ebene1->field.name|escape:"html"}</a>
<ul>
{nav page=$ebene1 item=ebene2 param.has_children=1}
<li>
<a href="{nav_url}">{$ebene2->field.name|escape:"html"}</a>
</li>
{/nav}
</ul>
</li>
{/nav}
</ul>
Schauen Sie sich dazu bitte auch diese Seite an {nav} {nav_url}
Bestandteil fast jeder Webseite ist eine sogenannte Brotkrumen-Navigation oder auch Pfad.
Dieser Pfad zeigt an, wo sich die aktuelle Seite innerhalb der Struktur des kompletten Auftritts befindet.
Ein einfaches Besipiel für eine solche Brotkrumen-Navigation könnte wie folgt aussehen :
{get_path page=$page show_self=1 var=pfad}
{if $pfad}
{foreach from=$pfad item=seite name=pfad}
<a href="{page_url page=$seite}">{$seite->field.name}</a>
{if NOT $smarty.foreach.pfad.last}
>>
{/if}
{/foreach}
{/if}
Über rekursive Aufrufe des {include}-Befehls können sie auch relativ einfach beliebig Tiefe Navigationen erstellen.
Dies eignet sich besonders, um z.B. eine einfache Sitemap zu generieren.
Dazu legen Sie z.B. direkt im Design-Verzeichnis eine Datei unterseiten.html an, die wie folgt aufgebaut ist :
{if $aktuelle_id}
{navigation id=$aktuelle_id var=unterseiten}
{else}
{navigation page=$aktuelle_seite var=unterseiten}
{/if}
{if $unterseiten}
<ul>
{foreach from=$unterseiten item=seite}
<li>
<a href="{page_url page=$seite}">{$seite->field.name}</a>
{include file=unterseiten.html aktuelle_seite=$seite}
</li>
{/foreach}
</ul>
{/if}
Jetzt muss man nur noch an passender Stelle (z.B. in der index.html) dieses Template zum ersten Mal einbinden :
{include file=unterseiten.html aktuelle_id=$site->rootId}
Um eine solche Rekursion zu realisieren greifen wir auf die Möglichkeit zurück dem {include}-Befehl zusätzliche Parameter übergeben zu können.
Näheres hierzu können Sie dem entsprechenden Kapitel des Smarty-Dokumentation entnehmen
|
Tel: +49 (0)6261 / 6743-0 Fax: +49 (0)6261 / 6743-29 E-Mail: info@egotec.com |
EGOTEC GmbH Hauptstraße 130 D-74821 Mosbach |
| Erstellt mit EGOTEC® Internet: www.egotec.com © EGOTEC GmbH | |