npostnik.de

Druckversion mit TemplaVoila

Die Druckversion der Seite kann über 3 mögliche Wege gesteuert werden. Der erste ist das Einbinden eines Stylesheets mit der media-Attribut „print“. Da kann man bestimmte Bereiche ausblenden, wie z.B. Menü. Der Nachteil ist, dass es nicht in allen Browsern funktioniert könnte und im Hinblick auf Typo3-Performance muss einiges für die Seite gerendert und gerendert werden, was dann nicht angezeigt wird. Die zweite Möglichkeit ist das Type-Attribut in Typo3. Da kann man bestimmte Elemente bereits in Typo3 ausgeben oder die Seite komplett anders gestalten. Der Nachteil ist, dass es mit TemplaVoila nicht funktioniert, sobald man FCEs benutzt. Die dritte Möglichkeit ist über die Übergabe der GET-Variable print, die TemplaVoila dazu veranlaßt, ein anderes Template zu verwenden (falls eins definiert ist). In diesem Beispiel werden alle drei Methoden miteinander verknüpft.

Drucken Link mit TypoScript anlegen

Zunächst definiert man den Link in TypoScript im Haupttemplate, damit er auf jeder Seite angezeigt wird:

lib.specialnavigation {
30 = TEXT
30 {
value = Seite drucken
wrap =

  • |
  • stdWrap.typolink.parameter.data = TSFE:id
    stdWrap.typolink.parameter.wrap = |,98 710×600
    stdWrap.typolink.addQueryString = 1
    stdWrap.typolink.additionalParams = &print=1&no_cache=1
    stdWrap.typolink.JSwindow_params = status=0,menubar=0,scrollbars=1,location=0,toolbar=0
    }
    }

    Die Druckversion geht in einem neuen Fenster auf. Die URL dazu ist die aktuelle Seite (mit allen Parametern, ergibt sich aus addQueryString) mit einem anderen Page Type (98) und den zusätzlichen Variablen print und no_cache. Nun kann man im TypoScript-Template die Druckversion mit typeNum 98 definieren und da ein anderes Stylesheet angeben und einen anderen Header. Hier ist ein Beispiel für eine Toolbar, die das Drucken de Dokuments und das Schließen des Fensters ermöglicht.


    print = PAGE
    print {
    bodyTag =
    typeNum = 98
    includeCSS {
    print = {$templateRoot}/css/print.css
    print2 = {$templateRoot}css/print2.css
    print2.media = print
    }
    10 = TEXT
    10.value =

    20 = TEXT
    20.value =
    |

    # site and page title
    40 = HTML
    40.value =

    49 = HTML
    49.value =

    50 = USER
    50.userFunc = tx_templavoila_pi1->main_page
    51 = HTML
    51.value =

    }

    Gleichzeitig soll diese Toolbar nicht gedruckt werden. Daher wird ein weiteres Stylehsheet mit dem Attribut media=“print“ eingebunden, das diese Toolbar wieder ausblendet beim tatsächlichen Druck.

    Template für Druckversion anlegen

    Zunächst bereitet man die HTM-Datei vor. Da legt man eine neue Datei an oder kopiert den Inhalt der HTML-Datei, die als Vorlage dient. Dort entfernt man alle Teile, die in der Druckansicht nicht benötigt werden und ordnet die anderen so an, wie gewünscht. Ein Beispiel: das Haupttemplate hat Elemente wie Suchbox, Loginbox, Rootline, Login-Status-Anzeige, Footer und Navigation, die alle in der Druckversion nicht benötigt werden. Übrig bleiben Subcontent links und Maincontent in der Hauptspalte. Diese Inhalte können aber auch untereinander angeordnet werden.

    In der Listenansicht im Seitenbaum die Seite mit den TemplaVoila Objekten auswählen. Dann legt man ein neues Template Object (TO) an. Als Titel vergibt man sinnvollerweise irgendwas, was auf Drucken hindeutet (Beispielseite Main Template Print). Dann wählt man im Drop-Down-Menü unter „Make this a sub-template of“ (deutsch bitte selber denken) das Template aus, zu dem dieses das Druckäquivalent sein soll, also in diesem Fall „Beispielseite Main Template“. In dem Feld „file reference“ wählt man im Datei-Browser die vorher erstellte HTML-Datei aus. Zuletzt wählt man im Feld „select a type of rendering“ „printer friendly“ aus und speichert ab.

    Zum Testen kann man die Druckversion über den Link im FE aufrufen, wenn eine Fehlermeldung angezeigt wird (irgendwas mit falschem Mapping), dann ist alles prima.

    Dann klickt man (immer noch in der Listenansicht) auf das Symbol des eben erstellten Template Objects, so dass das Context-Menü erscheint und wählt da „TemplaVoila“. Man gelangt direkt auf die Mapping-Einstellungen des TO. Als Data Structure wird das DS des übergeordneten Template benutzt. Also sieht man in den Mapping-Einstellungen alle Elemente, die im übergeordneten Template gemappt werden. Da braucht man aber nicht alle. Also mappt man nur die, die man für die Druckversion braucht: ROOT, Maincontent, Maincontent SubColumn und Subcontent. Dann noch im FE testen.

    Ergebnis: Die Druckversion wird in einem neuen Fenster geöffnet. Oberhalb wird eine Toolbar und ein Logo dargestellt. Die Toolbar wird beim tatsächlichen Drucken wieder ausgeblendet. Durch den GET-Parameter print wird TemplaVoila dazu veranlaßt, ein anderes Template für die Druckversion zu verwenden.

    Die mobile Version verlassen