TYPO3: Universelle Druckansicht mit Extensions
12. Juni 2007 | 7 KommentareEine 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.
23. Juli 2007, 12:19 Uhr
Als Alternative könnte man auch die Extension „make_printlink“ verwenden. Damit kann man sich die Definition der ganzen Parameter ersparen.
26. August 2008, 08:51 Uhr
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.
5. August 2010, 12:33 Uhr
wie kann ich obiger href in einem neuen Fenster offen?
29. Dezember 2010, 10:15 Uhr
Wie würde das ohne GPvar sondern mit GP aussehen, da GPvar immer in die Log der veralteten Funktionen geschrieben wird.
29. Dezember 2010, 10:32 Uhr
@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
29. Dezember 2010, 10:34 Uhr
Vielen Dank für den Hinweis… Halte von Druckversionen sowieso nicht viel. Abspeichern langt, ansonsten richtig Optimieren.
Alles andere ist Papierverschwendung.
29. Dezember 2010, 20:57 Uhr
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.