Tag: typoscript

Einrichten einer Printversion

Das Bereitstellen einer Printversion der jeweiligen Seite kann von TYPO3 durch ein richtig konfiguriertes Plug-In standardmäßig übernommen werden. Dieses Plug-In muss dem Template als statische Template bekannt gemacht werden. Erstmalig ist der Gebrauch von Konstanten von Nöten. Neben der Printversion soll ein Hyperlink, der zum Seitenbeginn führt, eingefügt werden.

Constants:

plugin.alt.print.file.template = fileadmin/template/print_template.html
plugin.alt.print.file.stylesheet = fileadmin/template/css/ne_print.css

Per Konstantendeklaration werden die spezielle Printvorlage in XHTML mit dazugehörigem Style Sheet für die Printversion festgelegt. Es handelt sich hierbei um eine für das Ausdrucken optimierte Darstellungsweise. Die Dateien sind im Dateimanager hinterlegt.

Setup:

# Druckversion und "Nach Oben" â Link SETUP
temp.printversion = TEXT
temp.printversion.data = TSFE : id
temp.printversion.wrap = <a href="#nach_oben"><img src="fileadmin/template/img/
icon_top.gif" width="11" height="11"> nach oben</a>&nbsp;&nbsp;&nbsp;<a href="index.php?id=|&type=98"><img src="fileadmin/template/img/ icon_druckversion.gif" width="12" height="11"> Druckversion</a>

# Konfiguration der Print-Version
alt_print >
alt_print = PAGE
alt_print.typeNum=98
alt_print.stylesheet = {$plugin.alt.print.file.stylesheet}

alt_print.10 = TEMPLATE
alt_print.10 {
template = FILE
template.file = {$plugin.alt.print.file.template}

subparts {
content < styles.content.get
}
workOnSubpart = DOCUMENT_BODY
}

Die Erstellung des Hyperlinks für die Druckversion gestaltet sich einfach. Das Standard-TYPO3-Plug-In „plugin.alt.print (98)“ wird dem Main Template als statisches Template be-kannt gemacht. Die Variable „temp.printversion“ wird von Typ „TEXT“ deklariert und mit der Anweisung der nächsten Zeile die aktuelle Page-ID ermittelt. Der Verweis an den Anfang der Seite (ein simpler Link auf einen statischen Anchor-Tag in der Designvorlage) und der eigentliche Link zur Druckversion samt Icon werden formuliert und die Page-ID übergeben. Um nun die Ausgabe des Inhalts in das vorbereitete Print-Template zu übergeben, muss als Seitentyp „98“ für die Printversion angegeben werden. Den Rest erle-digt TYPO3 dann von selbst.

Die nachfolgende Konfiguration der Print-Version ist eine angepasste Version aus der TYPO3-Dokumentation für den Standardeinsatz des Print-Plug-Ins. Ein neues PAGE-Objekt wird erzeugt, dass die Darstellung der Druckversion übernehmen wird. Die Eigenschaft wird aus Übersichtlichkeitsgründen passend zum Seitentyp auf 98 gesetzt. Das Style Sheet aus der Konstantendeklaration wird wie die eigentliche Vorlage dem PAGE-Objekt zugewiesen. In den Subpart „content“, welcher in der Print-Vorlage klassisch definiert wurde, wird der Inhalt aus der Seite kopiert (content < styles.content.get). Außerdem wird durch die abschließende Zeile erreicht, dass nur der Teil innerhalb des Subparts „DOCUMENT_BODY“ in der Printvorlage für den Seitenaufbau benutzt wird. Jeder Seite der nordEnergie-Präsenz wird nun ein Link, der zum Seitenanfang zurückführt und ein Verweis zur Druckversion hinzugefügt.

Pfadanzeige als Menü realisiert

Die Pfadanzeige (Breadcrumb) zur leichten Orientierung in der Seitenhierarchie ist vom Prinzip her nichts anderes als ein Menü mit speziellen Eigenschaften.

# Locator-Funktion (Pfadanzeige, rootline)
temp.locator = HMENU
temp.locator {
special = rootline
special.range = 0 | -1
wrap = Sie befinden sich hier:&nbsp;|
1 = TMENU
1 {
NO {
allWrap = | &nbsp;-&nbsp; |*| | &nbsp;-&nbsp; |*| |
stdWrap.htmlSpecialChars = 1
}
}
}

Ein neues mit „temp.locater“ bezeichnetes HMENU-Objekt vom Spezialtyp „rootline“ bietet die Funktionalität einer anklickbaren Pfadanzeige. Die „range“-Eigenschaft des HMENU-Objekts legt fest, bei welcher Ebene der Pfad beginnen soll.
In diesem Anwendungsfall wird auf obersten Ebene bei Level 0 (Startseite) begonnen und bis zur aktuellen Seite fortgesetzt (-1). Zur besseren Verständlichkeit der Funktion dient der vorangestellte, kurze Erklärungstext (Sie befinden…). Der Pfad selbst ist wiederum ein Text-menü, welches per „allWrap“ und „Optionsplit“ die einzelnen Seitentitel durch ein Minus-zeichen und Leerzeichen optisch voneinander abtrennt.

Aufbau der Metanavigation im Kopf- und Fußbereich

Die Metanavigation wird an zwei bekannten Stellen im Layout platziert. Da die Darstellung leicht variiert, müssen zwei, sich sehr ähnelnde Menüs angelegt werden. Hierfür werden die bereits aus der Hauptnavigation bekannten HMENU- und TMENU-Objekte eingesetzt.

# Metanavigation im KOPF
temp.menu_meta = HMENU
temp.menu_meta.special = list
temp.menu_meta.special.value = 38, 37, 36, 35
temp.menu_meta.1 = TMENU
temp.menu_meta.1.NO {
before = &nbsp;
after = &nbsp; | |*| &nbsp; | |*| &nbsp;
allWrap = <span class="metanavi-no"> | </span>
stdWrap.htmlSpecialChars = 1
}

# Metanavigation im FOOTER
temp.menu_footer = HMENU
temp.menu_footer.special = list
temp.menu_footer.special.value < temp.menu_meta.special.value
temp.menu_footer.wrap = &copy; nordEnergie AG 2005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
temp.menu_footer.1 = TMENU
temp.menu_footer.1.NO {
after = | |*| | |*| &nbsp;
allWrap = <span class="metanavi-no"> | </span>
stdWrap.htmlSpecialChars = 1
}

Die Metanavigation ist ein spezielles hierarchisches Menü vom Typ „list“. Dieser Liste können direkt Seiten durch die Angabe der Page-ID der jeweiligen Seiten über „value“ zugeordnet werden. Die vier Zuweisungen von 35 bis 38 entsprechen den Einträgen der Metanavigation Startseite, Kontakt, Impressum und Sitemap. Dem Textmenü im Normalzustand werden über „after“ und „before“ verschiedene Teile voran- und hintergestellt. In diesem Fall werden die zwei Werte verwendet, um Abstände zwischen den Menüeinträgen zu schaffen. Bei „after“ kommt ein „OptionSplit“ zu Einsatz. Der Bereich vor dem ersten |*| gilt für den ersten Eintrag, der darauffolgende für alle „mittleren“ Menüeinträge und der letzte Teil wird für den letzten Menüeintrag angewandt. Alle Einträge erhalten das Aussehen „metanavi-no“. Außerdem wird die XHTML-Konformität weiterhin gewahrt. Die Metanavigation für den Seitenkopf ist unter „temp.menu_meta“ abgelegt.

Für die Anzeige der Metanavigation im Fußbereich werden die Schritte weitestgehend analog durchgeführt. Die Zuweisung der Page-IDs wird aus dem erstangelegten Menü übernommen. Außerdem wird, wie in der Vorlage definiert, ein Copyright-Hinweis der Navigation vorangestellt und der nötige Abstand zwischen diesen beiden Elementen hergestellt. Unter „temp.menu_footer“ wird dieses Menü zwischengespeichert.

Aufbau der Hauptnavigation

Der Aufbau der Navigation in TYPO3 ist simpel und schnell realisiert. Für das Erstellen der Hauptnavigation werden spezielle TypoScript-Objekte vom Typ HMENU und TMENU benö-tigt, die in TYPO3 für hierarchische, textbasierte Menüs verwendet werden. Grafische Navigationen oder Layermenüs wären ebenfalls durch das CMS nutzbar gewesen, sind für diese Art der Navigation jedoch überflüssig.

# Hauptnavigations-Menu 1 cObject - vom Typ HMENU
temp.menu_main = HMENU

# Erste Ebene Menu-Object, textuell
temp.menu_main.1 = TMENU
temp.menu_main.1 {

# Normal-Zustand Eigenschaften
NO.allWrap = <div class="mainnavi-level1-no"> | </div>
NO.stdWrap.htmlSpecialChars = 1
}

# Zweite Ebene Menu-Object, textuell
temp.menu_main.2 = TMENU
temp.menu_main.2 {

# Normal-Zustand Eigenschaften
NO.allWrap = <div class="mainnavi-level2-no"> | </div>
NO.stdWrap.htmlSpecialChars = 1

# Aktiven Zustand aktivieren und Eigenschaften setzen
ACT = 1
ACT.allWrap = <div class="mainnavi-level2-act"> | </div>
ACT.stdWrap.htmlSpecialChars = 1
}

temp.menu_main.3 = TMENU
temp.menu_main.3 {

# Normal-Zustand Eigenschaften
NO.allWrap = <div class="mainnavi-level3-no"> | </div>
NO.stdWrap.htmlSpecialChars = 1

# Aktiven Zustand aktivieren und Eigenschaften setzen
ACT = 1
ACT.allWrap = <div class="mainnavi-level3-act"> | </div>
ACT.stdWrap.htmlSpecialChars = 1
}

Erzeugt wird ein mit dem Titel „temp.menu_main“ (frei wählbar) versehenes HMENU-Objekt, welches für „Hierarchisches Menü“ steht und das grundlegende Basisobjekt aller TYPO3-Menüs ist. Für das neue Menüobjekt müssen nun seine Zustände und Ebenen definiert werden. Dafür werden den drei Ebenen drei neue Menü-Objekte von Typ TMENU zugewiesen (Textmenüs) und der jeweilige Normal-Zustand angegeben (abgekürzt mit NO). Zusätzlich kann ein aktives Aussehen, wenn der Menüpunkt aktuell ausgewählt ist, zur erhöhten Orientierung des Besuchers definiert werden (ACT), was für die zweite und dritte Ebene realisiert wurde.

Von dem generellen Prinzip her wird den verschiedenen Zuständen lediglich ein umschlie-ßender Div-Tag zugewiesen. So erhält bspw. der Normalzustand der ersten Ebene durch „allWrap“ die Div-Klasse „mainnavi-level1-no“. Für das Pipesymbol („|“) wird also der Menücode aus dem CMS eingefügt und von den in „allWrap“ stehenden Zeichen umgeben. Das genaue Aussehen dieses Eintrages ist im Style Sheet definiert. So funktioniert die Menüerstellung in allen Fällen. Die „htmlSpecialChars”-Funktion ist für die XHTML-Kompatibilität notwendig, falls Sonderzeichen im Textmenü verwendet werden.

Mit wenigen Zeilen TypoScript ist die gesamte, problemlos erweiterbare Hauptnavigation umgesetzt worden. Das Menü ist komplett dynamisch und bildet die Baumstruktur aus TY-PO3 ab. Wird eine neue Seite hinzugefügt, wird diese Veränderung automatisch in der Frontend-Darstellung eingepflegt. Das gesamte Menü ist in dem Eintrag temp.menu_main bereits angelegt und wird an späterer Stelle der Seite hinzugefügt.

Doctype-Festlegung per TypoScript

TYPO3 erzeugt standardmäßig HTML 4.01 Transitional kompatiblen Quellcode. Über wenige Zeilen TypoScript kann der Dokumententyp (Doctype) wie zuvor festgelegt auf XHTML 1.0 Strict gesetzt werden.

#DOCTYPE auf XHTML 1.0 Strict setzen, für den IE wird die XML-Angabe umgedreht
config.doctype = xhtml_strict
config.doctypeSwitch = true
config.xhtml_cleaning = all
config.htmlTag_langKey = de

Die erste Anweisung verändert den Doctype auf XHTML 1.0 Strict. Der zweite Befehl ist notwendig, da in der Version 6.0 des Microsoft Internet Explorers ein Bug existiert, der eine dem W3-Konsortium entsprechende Deklaration des XML-Typs der Seite vor dem Doctype fehlinterpretiert und zu gravierenden Darstellungsfehlern führt. Deshalb muss die Reihenfolge speziell für den Internet Explorer umgedreht werden, was durch diese Anweisung erledigt wird. Durch die Funktion „xhtml_cleaning“ wird der erzeugte XHTML-Code von häufigen Fehlern bereinigt. Mit der letzten Zeile wird die Sprachversion der generierten Seiten auf deutsch festgelegt.

Anlegen spezieller Bereiche/Funktionen

Wie die Unterscheidung von statischer und dynamischer Bereiche ergeben hat, müssen die Hauptnavigation, die Metanavigation im Kopf und Fuß, der Platzhalter für das Stimmungs-bild, der eigentliche Content inklusive Pfadanzeige und die Funktionen in der Fußzeile (Druckversion, Verweis an den Anfang der Seite) mit Hilfe von TypoScript realisiert werden. Die Dokumentation der praktischen Umsetzung in Auszügen soll die Erstellung des Grundgerüstes des Internetauftritts verdeutlichen.