hallo zusammen
ich würde gerne das ts-script, welches den footer über einen marker inkludiert in ein externes template auslagern.
ich habe also neben dem root-template ein weiteres template erstellt (footer_1)
bei dem haupttemplate habe ich das footer-1 template als static inkludiert.
im haupttemplate steht:
marks.MAIN < styles.content.get
marks {
MAIN = CONTENT
MAIN{
table = tt_content
renderObj < tt_content
renderObj.stdWrap.wrap (
|
)
}
FOOTER < temp.footer
}
im footer-template steht:
temp.footer = HTML
temp.footer {
value = <a href="http://www.meg.ch"">meg Informatik AG</a>
wrap = <b> | </b>
}
aber das geht nicht. irgendwas hab ich wohl bei der umsetzung falsch verstanden. bitte um hilfe 😉
grüsse stefan
Der Herr in
#44315 hat ähnliche Probleme, vielleicht solltest du da mal reinschauen.
Sollte es das nicht ist, prüfe ob der SUB-Template ordnungsgemäß mit dem MAIN-Template verknüpft ist!
Ich hab da mal n Tutorial geschrieben...
#27411 - Saubere Handhabung des TS-CODE (siehe auch HOW-TO)
MFG Proximo
EDIT: Um Fragen vorzubeugen... Die Bilder findet man auf Seite 2, 1. Beitrag
heisst das, dass an meinem code nix falsch ist? hab dein tut angeschaut aber auf mein problem finde ich keine lösung
//edit
habs geschafft. habe lediglich den marker falsch geschrieben. thx for help und bye
wie man villeicht merkt, bin ich mein haupttemplate in mehrere kleinere templates am auslagern. nun stehe ich vor einem neuen problem. also ein problem ist es nicht wirklich aber mir ist unklar, wieso das passiert:
also:
ich will den content im marker ###MAIN### ausgeben. (also nur die hauptspalte)
wenn ich das so mache, funktioniert es einwandfrei:
marks {
FLASH = HTML
FLASH.value = <img src="fileadmin/user_upload/template/flash_header/v1.jpg" width="780" alt="" />
SPACER < temp.spacer_menu
MAIN < styles.content.get
MAIN = CONTENT
MAIN{
table = tt_content
renderObj < tt_content
renderObj.stdWrap.wrap (
|
)
}
wenn ich diesen teil dann in ein anderes template auslagere:
MAIN < styles.content.get
MAIN < temp.main_rechts
im externen template steht dann:
temp.main_rechts = CONTENT
temp.main_rechts {
table = tt_content
renderObj < tt_content
renderObj.stdWrap.wrap (
|
)
}
das funktioniert auch, allerdings wird mir nun nicht nur der content von der mittleren spalte sondern auch der von der linken spalte ausgegeben. das will ich aber nicht. wieso passiert das?
Weil die Definition ungenau ist, ganz einfach...
# temp.main_rechts ist Content
temp.main_rechts = CONTENT
temp.main_rechts {
# Lies aus der Tabelle tt_content (den gesammten Content von Typo, von der aktuellen Seite)
table = tt_content
# RenderObj... was genau du da machst ist mir schleiderhaft
renderObj < tt_content
# Ein Wrap für den Render... nie gebraucht aber du wirst es schon brauchen...
renderObj.stdWrap.wrap = |
}
Diese Definition müssen wir erstmal etwas präzisieren:
# temp.main_rechts ist Content
temp.main_rechts = CONTENT
temp.main_rechts {
# Lies aus der Tabelle tt_content (den gesammten Content von Typo, prinzipiell alle Seiten, Spalten und Sprachen)
table = tt_content
# Präzisierungen
select {
# THIS... die aktuelle Seite
pidInList = this
# Sortierregel, sortieren nach Spalte "sorting"
orderBy = sorting
# Inhalt der Spalte 0, dies ist die "normal-spalte" den rest kannst du selber testen...
where = colPos=0
# Und jetzt präzisieren wir unsere Auswahl noch mit den aktuellen Sprach-Parametern
languageField = sys_language_uid
}
# RenderObj... was genau du da machst ist mir schleiderhaft
renderObj < tt_content
# Ein Wrap für den Render... nie gebraucht aber du wirst es schon brauchen...
renderObj.stdWrap.wrap = |
}
Nochmal ohne die Erklärungen (die obere würde aber auch funktionieren):
temp.main_rechts = CONTENT
temp.main_rechts {
table = tt_content
select {
pidInList = this
orderBy = sorting
where = colPos=0
languageField = sys_language_uid
}
renderObj < tt_content
renderObj.stdWrap.wrap = |
}
Warum das so ist, dass erste Funktioniert hat, ist damit zu erklären, dass Typo nur bis zur ersten Ausgabe eines Objects arbeitet... oben steht
MAIN < styles.content.get
über
MAIN = CONTENT
MAIN{
table = tt_content
renderObj < tt_content
renderObj.stdWrap.wrap = |
}
also wird nur ersteres abgearbeitet, das Zeug mit dem Render und der ungenauen Definition erreicht er garnicht mehr. Im 2. Fall (mit dem ausgelagerten Template) wird das externe Template zuerst abgearbeitet und daher vorrangig in der Ausgabe... ganz simpel...
Merke: Zwei Gleichsetzungen ( "=" - Zeichen) sind sinnlos wenn sie nicht durch IF oder Required geregelt werden...
MFG Proximo