Zum Inhalt springen

Umgang mit Seiten

Erstellt am 16. November 2014 · 4 Antworten · letzte Antwort am 22. November 2014

Tags: Templates & Layouts, TYPO3 6.x, Frage

fredchen ·

Hallo Leute.
Fange gerade erst mit Typo3 an. Das Beispiel im Buch von Mittwald habe ich erfolgreich hinbekommen und kann damit weiter experimentieren.

Ich habe ein Root-Template. Das darin stehende Menü funktioniert auf allen Seiten, die ich unterhalb der Root-Seite angelegt habe.
Was muss ich aber nun machen, wenn eine bestimmte Seie einen anderen bzw. einen erweiterten Inhalt haben soll als es im Root-Template geschrieben wurde?

Muss ich dann für jede Seite ein eigenes Template anlegen (und darin all das Gleiche wiederholen, was schon im Root-Template steht)? Das mit dem Vererben habe ich verstanden, aber ich möchte sowohl vererben als auch etwas Neues ins Template schreiben.

Oder kann ich nur das Root-Template so erweitern, dass es alle anklickbaren Seiten ausliest und unterschiedliche Befehle ausführt?

Damit experimentierte ich auch. Aber immer wenn ich versuche entsprechend verschiedener Hilfeseiten eine Abfrage nach der Seiten-ID zu schreiben, klappte das nicht.
Ich habe mit TSFE:id und CASE und if ... else probiert, aber entweder wird mein Gesamtlayout zerschossen oder das Menü wird nicht angezeigt ... Wahlrscheinlich eine Frage der Position und der Syntax?

Daher konkret die Frage:
Wo bzw. an welcher konkreten Position müsste ich in nachfolgendem Template was genau eintragen, um je nach Seitenaufruf (id=2 oder eine andere id) unterschiedliche Marker anzusprechen? Könnt Ihr mir ein Beispiel dafür geben? Ich dachte sinngemäß an

Wenn id = 2 dann mache das und das
Wenn id = 3 dann etwas anderes

Vielen Dank fürs Erste

page = PAGE
page {
typeNum = 0

includeCSS {
file1 = fileadmin/mytemplate01/templates/css/style.css
}

10 = TEMPLATE
10 {
template = FILE
template.file = fileadmin/mytemplate01/templates/index.html
workOnSubpart=LAYOUT
subparts {

LOGO = TEXT
LOGO.value = <a href="index.php" title="Zur Startseite"><img src="fileadmin/mytemplate01/templates/images/logo.gif" alt ="Logo"/></a>

MENU = HMENU
MENU {
special = directory
special.value = 1
entryLevel = 1
1 = TMENU
1 {
expAll = 1
noBlur = 1
wrap = <ul id="topnav" class="sf-menu">|</ul>
NO = 1
NO {
wrapItemAndSub = <li>|</li> <br />
stdWrap.htmlSpecialChars = 1
}
CUR < .NO
CUR {
ATagParams = id="aktiv"
}
}

2 < .1
2 {
wrap = <ul>|</ul>
NO = 1
NO {
ATagBeforeWrap = 1
linkWrap = <span>-&nbsp;</span>|
wrapItemAndSub = <li>|</li>
}

}

#Ende Menu:
}

CONTENT_NORMAL = CONTENT
CONTENT_NORMAL {
table = tt_content
select {
where = colPos=0
orderBy = sorting
languageField = sys_language_uid
}
}

#suppart Ende:
}

#template Ende:
}

#Page ENDE
}

Julian.​Hofmann ·

Hallo.

Erst einmal ein herzliches Willkommen in der TYPO3-Community! :-)
Zöger nie zu fragen, denn alle anderen in den Foren, Mailinglisten usw. wissen selbst, dass ihr Einstieg einst auch nicht ganz so leicht war, und wie gut es war, jemand fragen zu können. Hilfe gibt da immer gerne.

Prinzipiell gibt es zwei vorgehensweisen, um Abweichungen vom Roottemplate anzugeben:
1.) Erweiterungstemplates auf Unterseiten
2.) Conditions im Roottemplate

1.) Erweiterungstemplates auf Unterseiten

Mittels eines Extension Tempaltes (auch via "Web->Template" erreichbar) kannst Du zusätzliches TypoScript für die Seite, auf der dieses Template liegt, und deren Unterseiten angeben. Du kannst hier auch TypoScript des Roottemplates explizit löschen.

2.) Conditions im Roottemplate

Mit Condition kannst Du innerhalb des Roottemplates Ausnahmen/Sonderbehandlungen definieren. Bei Conditions ist jedoch stets zu beachten, dass sie auf oberster Ebene stehen (also niemals in geschweiften Klammern).
Möglich ist die Abfrage einer einzelnen Seite oder aber auch einer Seite samt Unterseiten

[globalVar = TSFE:id =  123]
  lib.meinText = TEXT
  lib.meinText.value = Hallo, ich bin die Seite mit ID 123
[global]

[PIDinRootline =  99]
  lib.meinText = TEXT
  lib.meinText.value = Hallo, ich habe die Seite 99 in meinem Pfad bis hoch zur Rootpage
[global]

Viele Grüße
Julian

fredchen ·

Hallo. Danke für die Antworten. Ich habe (einige Stunden) probiert und komme leider nicht weiter.
Beim 1. Ansatz (ext. Template) experimentiere ich noch. Aber gehe ich recht davon aus, dass ich eigentlich nur die gleiche root-Template-Bezeichnung für die page übernehmen und ergänzen muss? Ich meine:
In meinem root-Template wird ja page.10 definiert.
Im ext. Template brauche ich jetzt nur im Setup darauf Bezug nehmen mit
page.10. und dann irgendetwas seitenspezifisches? Die Marker können auch neu gesetz werden und müssen nicht im Root-Template vorhanden sein? Die neuen Marker des ext-Templates müssen auch nicht von denen des root-Templates eingeschlossen sein?

Zur 2. Methode:
Wo müsste denn bei meinem obigen Code die Unterscheidung, welche Seite aufgerufen wird, geschrieben werden, so dass auch andere Elemente der Seite an die Unterseite vererbt werden?
Ich habe mich nach diesem Beispiel leiten lassen:
http://www.typo3forum.net/forum/typo3-fragen-probleme/23099-eigene-templates-fuer-unterseiten.html
Wenn ich z.B. beim Code oben in die 2. Zeile (gleich nach dem page = PAGE) folgendes eintrage:

[PIDinRootline=4]
page.10.template.file=fileadmin/mytemplate01/templates/unterseite.html

dann werden die anderen Elemente wie CSS, Menü und Content, die im Beispiel oben ja erst nach der 3. Zeile ( also nach

page {

)angestoßen werden, nicht ausgeführt. Kann ich auf die irgendwie verweisen?

Ich habe eigentlich schon viele Möglichkeiten aus beiden Herangehensweisen erfolglos ausprobiert, der Fehler steckt sicher im Detail oder ganz wo anders, daher bitte ich um einen Hinweis in die richtige Richtung.

Dank und Gruß

jenses ·

Ich verstehe dich nicht wirklich,
aber Conditions schreibt man immer nach den global gültigen Regeln.
Und niemals innerhalb geschweifter Klammern!

page = PAGE
page {
   ... komplettes TS für alle Seiten gültig
}

[PIDinRootline=4]
page.10.template.file=fileadmin/mytemplate01/templates/unterseite.html
[global]
fredchen ·

Danke! Das klappt 🙂
Aber sehe ich es richtig, dass die unterseite.html dann mindestens alle Marker haben muss, die ich eigentlich bereits im root-Template angelegt hatte (Navigtion und Content - sofern ich sie natürlich haben möchte)?
unterseite.html überschreibt also meine root-Seite index.html total? Ich hatte gehofft, die Marker für Navi und Content und andere, die ich AUCH in der Unterseite brauche, nur einmal setzen zu müssen.
Kann ich die "root-Template-Marker" auslagern und in meine unterseite.html inkludieren?

Danke vorab - das Experimentieren macht inzwischen mehr Spaß!