Zum Inhalt springen

headerData macht komische Sachen

Erstellt am 24. Juni 2009 · 3 Antworten · letzte Antwort am 24. Juni 2009

Tags: Frage

JBrooks ·

Hallo,

hab grad nen ganz komischen Fehler bei der Ausgabe eines Printlayouts in Verbindung mit headerData.

Ich hab Templavoila im Einsatz mit 2 Untertemplates (Print und Lightbox). Das funktioniert soweit auch. Nur wollte ich nun bei der Printausgabe verhindern, dass sämtliche CSS und JS Dateien, die bei der eigentlichen Webseite ausgegeben werden, nicht im Header landen. Daher hab ich folgenden Code erstellt:

temp.headerDefault {
	# title-TAG
	100 = TEXT
	100.field = subtitle // title
	100.wrap = <title>|  :: XY</title>
	
	# CSS für Standard Layout
	110 = TEXT
	110.value (
	<link href="fileadmin/templates/css/style.css" rel="stylesheet" type="text/css" media="screen" />
	<link href="fileadmin/templates/css/thickbox.css" rel="stylesheet" type="text/css" media="screen" />
	<link href="fileadmin/templates/css/print.css" rel="stylesheet" type="text/css" media="print" />
	)
	
	# Browser Spezifische CSS Angaben
	120 = TEXT
	120.value (
	<!--[if lt IE 7]><link href="fileadmin/templates/css/ie6.css" rel="stylesheet" type="text/css" /><![endif]-->
	<!--[if IE 7]><link href="fileadmin/templates/css/ie7.css" rel="stylesheet" type="text/css" /><![endif]-->
	)
	
	#Javascript Angaben
	160 = TEXT
	160.value (

	<script src="fileadmin/templates/js/jquery.min.js" type="text/javascript"></script>
	<script src="fileadmin/templates/js/main.js" type="text/javascript"></script>
	<script src="fileadmin/templates/js/jquery.thickbox.js" type="text/javascript"></script>
	)
}


temp.headerPrint {
	# title-TAG
	100 = TEXT
	100.field = subtitle // title
	100.wrap = <title>|  :: XY</title>
	
	# CSS für Standard Layout
	110 = TEXT
	110.value (
	<link href="fileadmin/templates/css/print.css" rel="stylesheet" type="text/css" />
	)
}

temp.headerLightbox { 
	# title-TAG
	100 = TEXT
	100.field = subtitle // title
	100.wrap = <title>|  :: XY</title>
	
	# CSS für Standard Layout
	110 = TEXT
	110.value (
	<link href="fileadmin/templates/css/thickbox.css" rel="stylesheet" type="text/css" media="screen" />
	<link href="fileadmin/templates/css/thickbox_katalog.css" rel="stylesheet" type="text/css" media="screen" />
	)
	
	#Javascript Angaben
	160 = TEXT
	160.value (

	<script src="fileadmin/templates/js/jquery.min.js" type="text/javascript"></script>
	<script src="fileadmin/templates/js/main.js" type="text/javascript"></script>
	)
}

page = PAGE
page {
	typeNum = 0
	meta.description.field = abstract
	meta.keywords.field = keywords
	meta.robots = index,follow,noodp,noydir
	shortcutIcon = favicon.ico
	10 = USER
	10.userFunc = tx_templavoila_pi1->main_page
	headerData < temp.headerDefault
}


//	Objekt für Druckseiten erzeugen

print = PAGE
print {
	typeNum = 98
	headerData < temp.headerPrint
	10 = USER
	10.childTemplate = print
	10.userFunc = tx_templavoila_pi1->main_page
}


//	Objekt für Lightboxen erzeugen

lightbox = PAGE
lightbox {
	typeNum = 200
	headerData < temp.headerLightbox
	10 = USER
	10.childTemplate = lightbox
	10.userFunc = tx_templavoila_pi1->main_page
}

Komischerweise werden bei der Printausgabe trotzdem die ganzen CSS und JS Dateien vom
temp.headerDefault verwendet. Hat das etwas damit zu tun, dass es sich bei templavoila um Untertemplates handelt und daher der Header vom page Objekt gezogen wird?

Bitte nicht wundern wie ich die CSS Dateien einbinden. Die Variante ist mir irgendwie lieber als includeCSS.

JBrooks ·

ich hab es nun teilweise gelöst bekommen. Wenn ich nicht nur print=1 als Parameter angebe, sondern auch type=98, dann gibt er mir den richtigen Headerinhalt aus.

Das heißt ich brauch print=1 um das richtige Subtemplate von Templavoila zu erhalten und die richtige typeNum um das richtige PAGE Objekt anzusprechen.

Geht das nicht auch einfacher. Nur mit dem print-Parameter? Dachte der wäre hardcodiert dem typeNum 98 zugewiesen...

JBrooks ·

mit typenum lässt sich leider das untertemplate bei templavoila nicht ansprechen. oder mach ich vielleicht etwas falsch?

Wenn es auch komplett ohne print=1 geht, lass es mich gerne wissen 😃