Zum Inhalt springen

templates in das haupttemplate inkludieren?

Erstellt am 19. Januar 2006 · 9 Antworten · letzte Antwort am 19. Januar 2006

Tags: Frage

borcherd ·

Hallo zusammen,

Ich bin gerade dabei, mich in Typo3 einzuarbeiten und habe diverse simple Seiten aufgebaut.
Bei diesen Seiten habe ich immer nur ein template mit einem header, 1-2 Menüs und einem Contentbereich erstellt.

Kann ich in den Contentbereich auch weitere Templates inkludieren.
Wenn ich für eine tiefere Seite ein neues template anlege, dann wird es ja nicht in den content inkludiert - sondern als "root" Template geladen...

...Ich hoffe, dass ich mich deutlich ausgedrückt habe 😃

Unbekannter Benutzer ·

Kann ich in den Contentbereich auch weitere Templates inkludieren.
Wenn ich für eine tiefere Seite ein neues template anlege, dann wird es ja nicht in den content inkludiert - sondern als "root" Template geladen...

...Ich hoffe, dass ich mich deutlich ausgedrückt habe

Hast Du, aber alles ein bisschen durcheinander gebracht 😉

Templates inkludieren kannst Du in jedem Template unter "click here to edit whole template record", dort include basis template.

Wenn Du für eine tiefere Seite ein neues Template anlegst wird es nicht als root geladen sondern als extension template. Normalerweise, es sei denn Du definierst es explizit als root template ("click here to edit whole template record" ...). Ein extension template überschreibt eine oder mehrere (oder alle) Eigenschaften Deines übergeordneten Templates, je nach dem was Du da hineinschreibst.

Viele Grüße
Niki

borcherd ·

Wenn ich im "hauptTemplate" für einen bestimmten DIV tag festlege, dass hier der content der seiten dargestellt werden soll, dann werden natürlich auch nur seiteninhalte dargestellt - und keine templates inkludet.
z.B. subparts.content < styles.content.get

muss ich da einen switch vorbauen, der entweder seiteninhalte oder templates darstellt?

Unbekannter Benutzer ·

muss ich da einen switch vorbauen, der entweder seiteninhalte oder templates darstellt?

Templates werden eigentlich nie dargestellt (ausser hier im Forum für Code Diskussionen) sondern konfigurieren die Ausgabe des Seiteninhalts.

Vielleicht schreibst Du einfach mal was Du genau vorhast.

Viele Grüße
Niki

borcherd ·

sorry - das wahr wirklich sehr verwirrend!

Ich möchte in mein HTML-Template, dass ich in meinem (typo3)Haupttemplate aufrufe ein weiteres HTML-Template inkludieren.

Dieses weitere HTML-Template, dass in den Content bereich geladen werden soll, ist allerdings von der unterseite abhängig.

Ein Beispiel:

Ich habe eine Seite mit einem Header, einem Menü (links) und rechts davon den Content Bereich.
Wenn ich z.B auf meine unterseite "homepage" klicke, dann möchte ich in meinem Content-Bereich meine Homepage darstellen, die allerdings mit einem HTML Template gestaltet wurde.

Dafür muss ich doch meiner unterseite ein (typo3) Template geben, dass wiederum mein HTML Template lädt.

Unbekannter Benutzer ·

hm glaub nicht dass das mit Unter-HTML-Templates geht. Normalerweise lädst Du einfach ein komplett anderes HTML Template. Mach also einfach ein HTML Template für die eine Seite und eines für die andere Seite. Und dann referenzierst Du die entsprechend über Dein TypoScript. Das kannst Du entweder über extension templates oder - meist besser - über conditions steuern.

Oder Du machst das gleich ganz modern und arbeitest ohne HTML Template, baust also die gesamte Seite über TypoScript auf dann bist Du am flexibelsten. Machen wir immer so, Voraussetzung ist aber eigentlich dass Du css-basierendes XHTML erstellt hast, bei Tabellenwahnsinn dauerst sonst zu lang.

Viele Grüße
Niki

borcherd ·

xhtml ist für mich auch standart.
aber wie differenzierst du die gestaltung der verschiedenen seiteninhalte?

ich bräuchte mal ein beispiel.
in den tutorials werden die seiten vielzu anpruchslos aufgebaut.

Gruß Henning

Unbekannter Benutzer ·

wenn Du xhtml und css basierend hast, brauchst Du um Content, Menü etc. nur ein paar divs legen damit Du sie übers css ansprechen kannst.

Startest dann Dein TS Template ganz einfach mit

page.10 = IMAGE
page.10.file = fileadmin/logo.gif
page.10.wrap = <div id="logo"> | </div>

etc. etc.

Wenn Du um mehrere Elemente ein div brauchst, pack alle Elemente in ein COA und gib dem COA ein wrap mit. Wenn Du einzelne Bereich ändern willst kannst Du das total easy über conditions machen.

Z.B.

page.10 = IMAGE
page.10.file = fileadmin/logo.gif
page.10.wrap = <div id="logo"> | </div>

[globalVar = TSFE:id=123]
page.10 >
page.10 = TEXT
page.10.value = Hier war mal ein Logo
page.10.wrap = <div id="logotext"> | </div>
[end]

Super flexibel so.

Viele Grüße
Niki

FalkWalter ·

Hallo, Borcherd,

anbei mal ein wenig komplexeres Beispiel, das Dir zeigt, wie man verschachteln kann:

Hier, im Haupttemplate, wird eine allgemeine Seitenstruktur erzeugt. Die Bereiche werden über libs eingebunden. Die Bereiche sind in extra templates-Einträgen gespeichert und in das Haupttemplate als Basis Templates eingebunden.

page = PAGE

page {
  typeNum = 0
  bodytag = <body>
 
# Creates Shortcut Icon for browser address line, tab and favourites
 headerData.10 = TEXT
 headerData.10.value = <link rel="SHORTCUT ICON" href="http://papandina.cip.cgiar.org/favicon.ico" />
  
  includeCSS < lib.cssStyles.10

  #Referencing areas into page  
  10 < lib.areaTop
  20 < lib.areaLeft
  40 < lib.areaCenter
  30 < lib.areaRight
  50 < lib.areaBottom
  
  #Referencing absolute positioned Elements into page
  60 < lib.services
  70 < lib.logo
  80 < lib.languageSelection
}

Hier nun beispielsweise das Template für den linken Bereich. Dieser Bereich wird je nachdem, wo sich der User befindet, anders befüllt, bzw. gar nicht angezeigt:

# Creates and fills left Area
lib.areaLeft = COA
lib.areaLeft.wrap = <div id="areaLeft">|</div>
  #Fills in Patron Organization Box, if current page IS Web Site Root
  [globalVar = TSFE:id = {$webSiteRootID}]
    lib.areaLeft.10 < styles.content.getLeft
    lib.areaLeft.20 < lib.patronOrganizationBox
  # Fills in secondary navigation and sub pages, if current page is NOT Web Site Root (Home)
  [else]
    lib.areaLeft.30 < lib.secondaryNavigation
    lib.areaLeft.40 < lib.subpages
  [end]

#Removes left Area for certain Conditions (mostly pages or subtrees)
[globalVar = {$noLeftAreaPages}][PIDinRootline = {$noLeftAreaBranches}]
  lib.areaLeft >
[end]

Ich hoffe, das verwirrt nicht zusehr, sondern zeigt Dir, wie man Nikis Ansatz "im Großen" anwenden kann.

Ist zwar ne ziemliche TS-Coderei, aber man hat halt die Intelligenz im TS und nicht im HTML drin. Ich wollte anfangs auch wie Du innerhalb der HTML-Vorlagen auf weitere Vorlagen verweisen, hat aber leider nicht geklappt. Daher bin ich auf diesen Ansatz gegangen.

Randbemerkung: Das Füllen der Konditionen mit Konstanten hat den Vorteil, dass auch weniger Typo3-bewanderte Editoren das Layout von Seiten verändern können - ohne im TS rumzuwühlen.

Grüßle
Falk

borcherd ·

Vielen Dank für eure umfangreiche Hilfe!

Das mir den [Bedingungen] hatte bei mir erst nicht funktioniert, weil ich diese in geschweiften klammern hatte. scheint TS nihct zu mögen.

aber langsam verstehe ich die logic.
Andererseits verstehe ich nicht, dass viele auf template-extensions wie TemplateVoila schwören?

Jetzt würde mich nochmal interessiern, wie man eigene PHP scripts am sinnvollsten einbringt 😉

(...ich freue mich schon auf meine Typo3 Bücher, die morgen da sein sollten)