Zum Inhalt springen

extension templates nicht verstanden

Erstellt am 6. Oktober 2005 · 10 Antworten · letzte Antwort am 9. Oktober 2005

Tags: Frage

tom2 ·

hi,

wie der titel schon sagt, anscheinend habe ich das system mit den extension templates doch nicht verstanden 🙁

bisher ging ich davon aus, dass ein haupttemplate sich im roottree vererbt. ein extension template dafür genutzt werden kann, bestimmte seiten anders funktionieren zu lassen. z.b. variablen anders zu setzen.

bei dem einen projekt funktioniert das wunderbar. hier definiere ich in den constants eine eben solche und lass sie für bestimmte unterseiten überschreiben.

in einem aktuellen projekt, möchte ich aber im setup etwas überschreiben. hierbei geht es um folgendes snippet:

lib.image = TEXT
lib.image {
     value = <div id="headimage"><div style="background-image: url(fileadmin/images/headimage/head_default.png);"></div></div>
     override {
     required = 1
      data = levelmedia: -1, "slide"
      wrap = <div id="headimage"><div style="background-image: url(uploads/media/|);"></div></div>
      listNum = 0
      }}

temp.tease < lib.image

dies ist im root template definiert und wird vererbt. für die startseite soll aber nachfolgendes snippet angewandt werden:

lib.image = TEXT
lib.image {
     value = <div id="headimage_front"><div style="background-image: url(fileadmin/images/headimage/head_front.png);"></div></div>
}

der hintergrund ist der, dass die startseite einen größeren header bekommt als die unterseiten.

nun habe ich ein extension template angelegt welches letzteres snippet beinhaltet. leider wird mir dann das default aus dem root template angezeigt.

nehme ich eine kopie des root templates und ändere nur das für die startseite variierende snippet so funktioniert es wunderbar (logisch).

nur finde ich das a.) redundant und b.) unschön.

daher meine frage: wie bekomme ich es hin, dass nur dieses snippet in das extension template muss, so dass ich den rest nicht auch bei einer änderung anfassen muss.

für tipps wäre ich sehr dankbar 🙂

just2b ·

Hi,

korrigier mich wenn ich falsch lieg, aber du musst ja letzten code noch zuweisen.-.. so wie oben.. oder nicht?

lg

tom2 ·

hi,

danke für deine antwort. ja daran habe ich auch schon gedacht, dass ich es nochmal explizit mittels

temp.tease < lib.image

nochmal zuweise aber hat leider auch nichts gebracht.

tom2 ·

nochmal nach oben schieb 🙂 vielleicht findet sich ja doch jemand, der den entscheidenden wink mit dem zaunpfahl hat 😉

tom2 ·

ok,
nachfolgend das bis auf ein paar irrelevante daten (meta-angaben) vollständige setup:

lib.parseFunc_RTE.makelinks.http.extTarget =
lib.parseFunc_RTE.tags.link.typolink.extTarget =

lib.parseFunc_RTE.nonTypoTagStdWrap.HTMLparser {
 tags {
  b.remap = strong
  i.remap = em
  br.remap = br /
   }
}

lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.nonWrappedTag >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.innerStdWrap_all.ifEmpty >

lib.parseFunc.tags.link.typolink.target >
lib.parseFunc_RTE.tags.link.typolink.target >

tt_content.stdWrap.prefixComment >
tt_content.textpic.20.text.10.10.stdWrap.dataWrap =

temp.tpl = FILE
temp.tpl {
 file = {$maintpl}
}


temp.mainnav = HMENU
temp.mainnav {
 1 = TMENU 
 1 {
  expAll = 0
 
 NO.tabIndex=1 
 NO.accessKey=1 
 NO.ATagTitle >
 NO.ATagTitle.field = description
 
 NO.linkWrap = | |*| | |
 NO.stdWrap.htmlSpecialChars = 1
 }
}

temp.stitle= TEXT
temp.stitle {
 field = subtitle
 wrap = <h2>|</h2>
}

tt_content {
 stdWrap {  
  dataWrap >
 }
}


lib.image = TEXT
lib.image {
	value = <div id="headimage"><div style="background-image: url(fileadmin/images/headimage/head_default.png);"></div></div>
     	override {
     		required = 1
     		data = levelmedia: -1, "slide"
     		wrap = <div id="headimage"><div style="background-image: url(uploads/media/|);"></div></div>
     		listNum = 0
     	}
}
 
temp.tease < lib.image


lib.stdheader >

lib.stdheader = CASE
lib.stdheader {
 key.field = colPos
 2 = CASE
 2 {  
  key.field = header_layout
  1 = TEXT
  1 {
   field = header
   wrap = <div class="hbl"><h3>|</h3></div>
  }
  
  default = TEXT
  default {
   field = header   
   wrap = <div class="h"><h3>|</h3></div>
  }
  
  0 < .default
 }

 default = CASE
 default {  
  key.field = header_layout
  default = TEXT
  default {
   field = header
   required = 1
   fontTag = <h3>|</h3>
  }

  1 < .default
  1 {
   fontTag = <h4>|</h4>
  }
  
 }
 
 0 < .default
} 



temp.mainTemplate = TEMPLATE
temp.mainTemplate {
  template < temp.tpl
  workOnSubpart = DOCUMENT_BODY
  subparts.MAINNAV < temp.mainnav
  subparts.TEASEIMG < temp.tease
  marks.SITE_TITLE < temp.stitle
  subparts.SITE_CONTENT < styles.content.get
  subparts.SITE_CONTENT.stdWrap {
    postUserFunc = tx_sbakronymmanager_pi1->check
  }
  subparts.SITE_SUBCONTENT < styles.content.getRight
}

page = PAGE
page {
	typeNum = 0
 	config {
 		locale_all = de_DE
 		doctype = xhtml_11
 		xmlprologue = none

  		language = de
  		htmlTag_langKey = de
  		index_enable = 1
  		removeDefaultJS = 1
  		spamProtectEmailAddresses = 5
  		spamProtectEmailAddresses_atSubst = <span>@</span>
  		baseURL = 1
  		tx_realurl_enable = 1
  		disablePrefixComment = 1
  		xhtml_cleaning = all
  		prefixLocalAnchors = all
  	}
 	bodyTag = <body id="top">
 	10 < temp.mainTemplate
}

plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE >
plugin.tx_cssstyledimgtext._CSS_DEFAULT_STYLE >
plugin.tx_thmailformplus_pi1._CSS_DEFAULT_STYLE >

**über unsauberen code bitte hinwegsehen, bin noch am anfang ** 😉

theo ·

Du moppelst doppelt, deswegen folgender Vorschlag:

Haupttemplate

....
....
lib.image = TEXT
lib.image {
	value = <div id="headimage"><div style="background-image: url(fileadmin/images/headimage/head_default.png);"></div></div>
     	override {
     		required = 1
     		data = levelmedia: -1, "slide"
     		wrap = <div id="headimage"><div style="background-image: url(uploads/media/|);"></div></div>
     		listNum = 0
     	}
}
 
temp.mainTemplate = TEMPLATE
temp.mainTemplate {
  template < temp.tpl
  workOnSubpart = DOCUMENT_BODY
  subparts.MAINNAV < temp.mainnav
  subparts.TEASEIMG < lib.image
  marks.SITE_TITLE < temp.stitle
  subparts.SITE_CONTENT < styles.content.get
  subparts.SITE_CONTENT.stdWrap {
    postUserFunc = tx_sbakronymmanager_pi1->check
  }
  subparts.SITE_SUBCONTENT < styles.content.getRight
}
....
....

Extensiontemplate (alles weitere aus dem Haupttemplate läßt Du wech)

lib.imageklein = TEXT
lib.imageklein {
	...geändertes Typoscript...
}
 
temp.mainTemplate = TEMPLATE
temp.mainTemplate.subparts.TEASEIMG >
temp.mainTemplate.subparts.TEASEIMG < lib.imageklein
tom2 ·

danke dir theo.

bisher funktioniert es zwar noch nicht aber ich glaube den gedankengang verstanden zu haben:

a.) ich habe einen unnötigen zwischenschritt mit dem "temp.tease < lib.image" gehabt
b.) den marker vorher freischaufeln und mit dem neuen inhalt füllen

na mal gucken wo das bei mir noch klemmt. 🙂

theo ·

Kannst mir gerne per pm einen Zugang schicken.
Es kann sich wirklich nur um eine dämliche "Kleinigkeit" handeln, und bevor man sich hier wochenlang...

tom2 ·
theo schrieb

Kannst mir gerne per pm einen Zugang schicken.
Es kann sich wirklich nur um eine dämliche "Kleinigkeit" handeln, und bevor man sich hier wochenlang...

hallo theo,

danke für das angebot aber ich habe es aktuell nur lokal da ich meinen traffic nicht unnötig reizen möchte, t3 ist ja kein fliegengewicht *g*

allerdings habe ich mich jetzt nochmal rangesetzt und stück für stück meinen code entfernt. brachte nix. dann dachte ich, ok, zieh das pferd mal von hinten auf und hangel dich durch das page-objekt - und siehe da, da lag der hund begraben.

bei mir muss das wie folgt aussehen:

lib.imageklein = TEXT
lib.imageklein {
        ...geändertes Typoscript...
}


page.10.subparts.TEASEIMG >
page.10.subparts.TEASEIMG < lib.imageklein

dann klappt es. dein ansatz hat mir somit sehr weitergeholfen - vielen dank. 🙂

eines verstehe ich nur nicht. wieso wird "temp.mainTemplate" nach dem kopiervorgang freigegeben?

tom2 ·

ok, denkfehler. das verhalten ist ganz logisch, weil ich habe ja nun 2 instanzen, einmal in "temp.mainTemplate" und einmal in "page.10". da aber nur "page.10" sichtbar ist, wird auch der alte inhalt ausgegeben, da ich nur die temporäre variable in dem ext. template überschrieben habe.

würde ich temp.mainTemplate referenzieren würde er es auch in dem ext. template ändern.

*pling* und das zu später stunde *g*