Zum Inhalt springen

weiteres template einbinden (ts)

Erstellt am 6. Juni 2006 · 4 Antworten · letzte Antwort am 8. Juni 2006

Tags: Frage

silverzone ·

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

Proximo ·

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

silverzone ·

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

silverzone ·

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?

Proximo ·

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