Zum Inhalt springen

Zwei verschiedene Template auf einer Seite

Erstellt am 30. April 2004 · 9 Antworten · letzte Antwort am 30. April 2004

Tags: Frage

Fintan ·

Mir fehlt da irgendwie der Durchblick, aber es klappt bei mir einfach nie!

Ich möchte folgendes tun:
Alle Seiten haben das selbe Template. Nur die Startseite hat ein eigenes.

Weiss wer wie man das machen kann?

Fintan

jweiland ·

Das kann man über eine Bedingung lösen:

page.10.template.file = fileadmin/template_normal.html

[globalVar = TSFE:id=1234]
page.10.template.file = fileadmin/template_seite1234.html
[global]

Dabei wird bei id=1234 die Page-Id der Startseite eingetragen.

Jochen Weiland

Fintan ·

Wo muss ich das genau einfügen?

ich habe bis jetzt das:

page.stylesheet  = fileadmin/tuerkei/www/style.css

# Configuring the Auto-Parser for main template:
plugin.tx_automaketemplate_pi1 {
    # Read the template file:
  content = FILE
  content.file = fileadmin/tuerkei/www/tpl.html
 
    # Here we define which elements in the HTML that 
    # should be wrapped in subpart-comments:
  elements {
    BODY.all = 1
    BODY.all.subpartMarker = DOCUMENT_BODY
 
    HEAD.all = 1
    HEAD.all.subpartMarker = DOCUMENT_HEADER
    HEAD.rmTagSections = title
 
    TD.all = 1
  }
 
    # Prefix all relative paths with this value:
  relPathPrefix = fileadmin/tuerkei/www/
}


# Menu NAVIUP 1 cObject 
temp.naviup = HMENU 
  # First level menu-object, textual 
temp.naviup.1 = TMENU 


# Menu 1 cObject
temp.menu_1 = HMENU 
  # First level menu-object, textual
temp.menu_1.1 = TMENU
temp.menu_1.1 {
allWrap = <img src="fileadmin/tuerkei/www/bilder/tplpic/pfeildoppelt.gif" width="20" height="15" align="middle"> | <img src="fileadmin/tuerkei/www/bilder/tplpic/pfeildoppelt.gif" width="20" height="15" align="middle">
    # Normal state properties
  NO.allWrap = <img src="fileadmin/tuerkei/www/bilder/tplpic/pfeildoppelt.gif" width="20" height="15" align="middle"> | <img src="fileadmin/tuerkei/www/bilder/tplpic/punkt_gruen.jpg" width="150" height="1" vspace="0"> | <div class="menu1-level1-no"></div>
    # Enable active state and set properties:
  ACT = 1
  ACT.allWrap = <img src="fileadmin/tuerkei/www/bilder/tplpic/pfeildoppelt.gif" width="20" height="15" align="middle"> | <img src="fileadmin/tuerkei/www/bilder/tplpic/punkt_gruen.jpg" width="150" height="1" vspace="0"> | <div class="menu1-level1-act"></div>
}
  # Second level menu-object, textual
temp.menu_1.2 = TMENU
temp.menu_1.2 {
    # Normal state properties
  NO.allWrap = <img src="fileadmin/tuerkei/www/bilder/tplpic/punkt_trans.gif" width="20" height="15" align="middle"> | <img src="fileadmin/tuerkei/www/bilder/tplpic/punkt_gruen.jpg" width="150" height="1"> | <div class="menu1-level2-no"></div>
    # Enable active state and set properties:
  ACT = 1
  ACT.allWrap = <img src="fileadmin/tuerkei/www/bilder/tplpic/punkt_trans.gif" width="20" height="15" align="middle"> | <img src="fileadmin/tuerkei/www/bilder/tplpic/punkt_gruen.jpg" width="150" height="1"> | <div class="menu1-level2-act"></div>
}
 
# Main TEMPLATE cObject for the BODY
temp.mainTemplate = TEMPLATE
temp.mainTemplate {
    # Feeding the content from the Auto-parser to the TEMPLATE cObject:
  template =< plugin.tx_automaketemplate_pi1
    # Select only the content between the <body>-tags
  workOnSubpart = DOCUMENT_BODY
 
    # Substitute the ###menu_1### subpart with dynamic menu:
  subparts.menu_1 < temp.menu_1
 
    # Substitute the ###content### subpart with some example content:
  subparts.content < styles.content.get
}
 
 
# Main TEMPLATE cObject for the HEAD
temp.headTemplate = TEMPLATE
temp.headTemplate {
    # Feeding the content from the Auto-parser to the TEMPLATE cObject:
  template =< plugin.tx_automaketemplate_pi1
    # Select only the content between the <head>-tags
  workOnSubpart = DOCUMENT_HEADER
}
 
 
 
 
# Default PAGE object:
page = PAGE
page.typeNum = 0
 
# Copying the content from TEMPLATE for <body>-section:
page.10 < temp.mainTemplate
 
# Copying the content from TEMPLATE for <head>-section:
page.headerData.10  < temp.headTemplate

tt_content.image.1.imageLinkWrap.bodyTag = <BODY bgColor=white>
tt_content.image.1.imageLinkWrap.JSwindow.newWindow = 1

ich weiss, ist ein bischen ein Code wo hin und her gebastelt wurde 😃

Danke für deine Hilfe
Fintan

chronistin ·
jweiland schrieb

Das kann man über eine Bedingung lösen:

page.10.template.file = fileadmin/template_normal.html

[globalVar = TSFE:id=1234]
page.10.template.file = fileadmin/template_seite1234.html
[global]

Dabei wird bei id=1234 die Page-Id der Startseite eingetragen.

Das ist sehr elegant! Aber spricht irgendetwas gegen die Variante, im root-Template unter dem Punkt "Template on next Level" einfach ein anderes Template einzutragen?

Ich frage, weil mir das im Gegensatz zu manchen anderen Typo3 Geschichten verdächtig einfach vorgekommen ist...

jweiland ·

Generell finde ich die Idee nicht so prickelnd hier komplette Listings zu posten und zu erwarten dass sich andere durch den Code wühlen. Am ehesten lernt man Typoscript, wenn man versucht den Code zu verstehen.
Ich würde mal vermuten (ungetestet), dass der Code wie folgt umgeschrieben werden muss (die Conditions müssen sich ausserhalb von {...} befinden):

plugin.tx_automaketemplate_pi1.content = FILE
plugin.tx_automaketemplate_pi1.content.file =  fileadmin/tuerkei/www/tpl.html

[globalVar = TSFE:id=1234]
plugin.tx_automaketemplate_pi1.content.file = fileadmin/tuerkei/www/tpl2.html
[global]

plugin.tx_automaketemplate_pi1 {

    # Here we define which elements in the HTML that
    # should be wrapped in subpart-comments:
  elements {
    BODY.all = 1
    BODY.all.subpartMarker = DOCUMENT_BODY

    HEAD.all = 1
    HEAD.all.subpartMarker = DOCUMENT_HEADER
    HEAD.rmTagSections = title

    TD.all = 1
  }

    # Prefix all relative paths with this value:
  relPathPrefix = fileadmin/tuerkei/www/
}

# Menu NAVIUP 1 cObject

Jochen Weiland

chronistin ·
Fintan schrieb

chronistin
kannst du mir das genauer erklären?

Unter Vorbehalt, weil es möglicherweise eine falsche Vorgehensweise beschreibt - bin ja auch erst kurz dabei. Aber vielleicht kann sich ja jemand von den Profis wertend äußern... Also:

Ich habe zuerst das Template für die erste Seite erstellt. Dann für die erste der Unterseiten das zweite Template erstellt, das für alle anderen Seiten gelten soll. Und dann im Template der ersten Seite unter dem Punkt "Template on next level:" das Template der zweiten Seite eingetragen.

Es funktioniert bei mir problemlos, aber ich weiß wirklich nicht, ob das die _richtige_ Vorgehensweise ist.

jweiland ·

@chronistin:

Yepp, das müsste auch gehen und ist noch eleganter. Die von mir beschriebene Methode ist etwas allgemeiner, da man sie generell auf einzelne Seiten (und nicht nur auf einen Level) anwenden kann.

Jochen Weiland

Fintan ·

@Jochen Weiland

Danke ich habe deine Version ausprobiert und Sie funktioniert sehr gut 🙂

Sorry das ich den ganzen Code rein kopiert habe. Ich verstehe den Code auch. Aber ich bin mir manchmal nicht sicher und darum dachte ich es sei besser, das ganze rein zu kopieren! War also nicht unüberdacht!

@chronistin
Auch dir danke! Probiere ich auch noch aus 🙂

Fintan

chronistin ·
jweiland schrieb

Die von mir beschriebene Methode ist etwas allgemeiner, da man sie generell auf einzelne Seiten (und nicht nur auf einen Level) anwenden kann.

Ja, das könnte auch mal praktisch sein.