TYPO3: Universelle Druckansicht mit Extensions

Eine schöne Druckansicht mit TYPO3 zu bekommen ist manchmal gar nicht so einfach, insbesondere wenn zahlreiche Extensions integriert sind, wie z.B. tt_products oder tt_news. Dafür doch die Mühe lohnt sich. Wie eine saubere Druckversion implementiert wird, beschrieben wir nachfolgend.Als erstes sollte unter Include static im RootTemplate die Vorinstallierte Erweiterung plugin.alt.print hinzugefügt werden: Als nächstes wird die Druckseite näher definert:Im TS folgenden Code einfügen.

# DRUCKSEITE DEFINIEREN # ********************************************* print = PAGE print { typeNum = 98 bodyTag =<body bgcolor="#ffffff" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="javascript:window.print()"> #10 < styles.content.getLeft 20 < styles.content.get #30 < styles.content.getRight } Dieser Code definert die Seite 98 als Druckseite (Defaultwert). Ausser dem wird festgelegt welcher Inhalt auf der Seite erscheinen soll. In diesem Fall wird nur der Inhalt aus der Mitte genommen.(Rechts und Links sind auskommentiert). Der bodyTag Abschnitt sort nur dafür das automatisch ein Druckfenster aufgeht. Nun kommt der schwierege Teil:Bei den meisten Extensions wird über den Link mitgeschickt welches Element man sich anschauen möchte, z.B. bei tt_news welche news man lesen möchte. Das schaut dann so aus: news.html?&no_cache=1&tx_ttnews[tt_news]= 61&tx_ttnews[backPid]=25&cHash=09bcea4abb Normalerweise wird das alles nicht an die Druckseite übergeben, ergo sobald man auf den Drucklink klickt erscheint der Beitrag nicht. Kümmern wir uns also darum das das alles übergeben wird:

# DRUCKLINK # ********************************************* 10.marks{ DRUCK = COA DRUCK.10 = TEXT DRUCK.10.value =| Seite drucken DRUCK.stdWrap.wrap = | DRUCK.stdWrap.typolinkno_cache = 1 DRUCK.stdWrap.typolink.target = print DRUCK.stdWrap.typolink.ATagParams = target = _top DRUCK.stdWrap.typolink.parameter.cObject = COA DRUCK.stdWrap.typolink.parameter.cObject { 5 = TEXT 5.data = page:uid 5.wrap = index.php?id=| 5.required = 110 = TEXT 10.value = &no_cache=120 = TEXT 20.data = GPvar : L 20.wrap = &L=| 20.required = 1 30 = TEXT 30.data = GPvar : tx_ttnews | backPid 30.wrap = &tx_ttnews[backPid]=| 30.required = 1 35 = TEXT 35.data = GPvar : tx_mjseventpro_pi1 | showUid 35.wrap = &tx_mjseventpro_pi1[showUid]=| 35.required = 1 40 = TEXT 40.data = GPvar : tx_ttnews | tt_news 40.wrap = &tx_ttnews[tt_news]=| 40.required = 1 45 = TEXT 45.data = GPvar : tx_ttproducts_pi1 | product 45.wrap = &tx_ttproducts_pi1[product]=| 45.required = 1 50 = TEXT 50.data = GPvar : cHash 50.wrap = &cHash=| 50.required = 1 60 = TEXT 60.value = &type=98 } } Dies kann man für beliebiege Extensions nach dem oben vorgestellten Schema erweitern.


Kommentare

Eine saubere Druckversion gehört zu einer ordentlichen Seite meines Erachtens schon dazu - ob man jetzt findet, dass zuviel ausgedruckt wird oder nicht. Aber dafür reichen vernünftige print-CSS-Angaben auch völlig aus.

Vielen Dank für den Hinweis... Halte von Druckversionen sowieso nicht viel. Abspeichern langt, ansonsten richtig Optimieren.

Alles andere ist Papierverschwendung.

@x-f

Das ganze Tutorial ist ein wenig angestaubt und in die Jahre gekommen - heute machen wir das meist anders - entweder nur noch über eine entsprechende print.css oder so wie hier beschrieben: https://blog.undkonsorten.com/drucken-mit-typo3

Wie würde das ohne GPvar sondern mit GP aussehen, da GPvar immer in die Log der veralteten Funktionen geschrieben wird.

wie kann ich obiger href in einem neuen Fenster offen?

Es geht auch ohne TS und weitere Extensions:

Ein einfaches display:none; für die entsprechenden Footer, Header, Teaser reicht aus, damit man nur noch den Inhaltsbereich gedruckt bekommt. Und wie für die Seite auf dem Bildschirm kann man dann die Stile für den Inhaltsbereich zum Druck anpassen.

Als Alternative könnte man auch die Extension "make_printlink" verwenden. Damit kann man sich die Definition der ganzen Parameter ersparen.


Kommentar schreiben

* Diese Felder sind erforderlich