Schritt für Schritt

Schritt 8 : Druck Template realisieren ( ohne Extension ) / Seite drucken Link erstellen

In diesem Schritt wird ein Drucken Link und ein Druck Template erstellt.

Druck Template erstellen

In vielen Fällen ( zum Beispiel bei TemplaVoilà ) sieht man, das für ein Druck Template ein eigenes HTML Template erstellt wird. Auch schon oft gesehen habe ich das eine Print CSS Datei beim bestehenden Template eingebunden wird, welches die nicht benötigten HTML Elemente per CSS beim drucken ausblendet.

Die CSS Variante ist sicherlich eine der besseren Lösung, weil somit auch durch das Drucken über die Browser Funktion das Layout optimiert wird. Ob eine Seite über eine CSS Druckversion verfügt, sieht man über die Browser Funktion <Druckvorschau>, oder spätestens wenn man die Seite ausgedruckt hat.

Es gibt einige Extenstions zum Thema drucken welche man einbinden kann um ein Druck Template erstellen zu können. Jedoch geht das auch mit reinem TS Code, ohne eine zusätzliche Extension.

Drucken Link mit TS Code erstellen

Wenn man mit TypoScript einen Drucken Link erstellt, muss man einige Dinge berücksichtigen. Einer der wichtigsten Punkte ist:

  • Bei einer Detail Seite von einer Extension, soll beim drucken nicht plötzlich wieder die Listenansicht angezeigt werden.


Oft wird vergessen die benötigten Parameter dem Drucken Link weiter zu geben. Zugegeben, bei POST Parameter ist es mit TypoScript etwas mühsam ( da würde ich eine Extension empfehlen ) jedoch bei GET Parameter ist es kein Problem. In {getIndpEnv:QUERY_STRING} sind die aktuellen GET Parameter vorhanden, diese kann man in den typolink einbinden.


temp.elements {
	# drucken link
	printlink = TEXT
	printlink {
		# label bei mehrsprachigkeit in ein XML auslagern ...
		value = drucken
		typolink {
			parameter.data = TSFE:id
			additionalParams.dataWrap = &{getIndpEnv:QUERY_STRING}&print=1
			title = seite drucken
			# damit werden cache probleme verhindert
			useCacheHash = 1
			ATagParams = class="icon printLink"
			target = _blank
		}
	}
}
Seite Drucken Link erstellen

Seiten Template beim drucken verädern

Damit im Druckentemplate unnötige HTML Elemente nicht mehr vorhanden sind, kann man diese per typoscript entfernen. Ebenfalls muss man sicherstellen, das die Druckversion der Seite nicht in der Suche (indexed_serach) erscheint.

Jetzt braucht man noch etwas um das darstellen des Drucken Templates auslösen zu können. Im Typo3 hat sich hier als URL Parameter type=98 oder print=1 eingebürgert.

Für diese Realisierung wurden einige Dateien und Scripte angepasst.

HTML Template anpassungen

<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-CH" lang="de-CH">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

###METADATA###

<!-- stylesheet -->
<link rel="stylesheet" type="text/css" media="all" href="css/stylesheet.css" />
<link rel="stylesheet" type="text/css" media="all" href="css/layouts.css" />
<link rel="stylesheet" type="text/css" media="###PRINT_MEDIA###" href="css/print.css" />

<!-- locales css -->
<style type="text/css">
	/*<![CDATA[*/

	/*]]>*/
</style>

<title>###METATITLE###</title>

</head>
	<body id="thefox-ch" class="###BODY_CLASS###" ###BODY_PARAMS###>

		<div id="page">
			<div id="box">
				<div id="header">
					<!-- Hauptnavigation -->
					###MENU1###
					<!-- Metanavigation -->
					###MENU2###
				</div>
				<!-- Content Bereich -->
				<div id="content" class="clearfix">
						###COL1###
						###COL2###
						###COL3###
				</div>

				###FOOTER###

			</div>
		</div>

	</body>
</html>
Anpassungen im HTML Template
Template Setup

# template erstellen
temp.htmlTemplate = TEMPLATE
temp.htmlTemplate {

	# ts code...

	marks {

		PRINT_MEDIA = TEXT
		PRINT_MEDIA.value = print

		BODY_PARAMS = TEXT
		BODY_PARAMS.value =

		# restlicher ts code ...

	}
}

# print layout
[globalVar = TSFE:type=98] || [globalVar = GP:print > 0]
temp.htmlTemplate.marks {
	BODY_PARAMS.value = onload="window.print();"
	PRINT_MEDIA.value = all
	# entfernen
	COL1 =
	MENU1 =
	MENU2 =
	FOOTER =
}
[global]
Template Setup ergäzen
Page Setup angepassen

# div includes und config....

# seite erstellen
page = PAGE
page {
	# typo3 header code deaktivieren
	config.disableAllHeaderCode = 1
	10 < temp.htmlTemplate
}

# print layout
[globalVar = TSFE:type=98] || [globalVar = GP:print > 0]
page {
	config.no_cache = 1
}
[global]

Page setup
Anmerkung

Das bei der Druckversion der URL Parameter id nun zwei mal angezeigt wird, ist zwar etwas unschön, aber nicht so tragisch.

Ein weiteres Problem ist jedoch, das ohne weitere Angaben Google diese Seite ( druck Version ) indexieren wird, dies sollte man verhindern, da der Benutzer keine Navigation sehen wird.

Druck Template nicht indexieren

Damit die Druck Version der Seite nicht bei Google indexiert wird, kann man im <head> Bereich entsprechend die <robots> Information festlegen.

Anpassung in den META Daten

[globalVar = TSFE:type=98] || [globalVar = GP:print > 0]
temp.metadata {
	40 = TEXT
	40.value = <meta name="robots" content="noindex, nofollow" />
}
[global]
Anpassen der Meta Informationen bei Druck Template