Zum Inhalt springen

In HTML Template Subtemplate einbauen

Erstellt am 11. November 2011 · 8 Antworten · letzte Antwort am 15. November 2011

Tags: Frage

Der_Chris ·

Hallo,

ich stelle mich glaube ich grade ziemlich dämlich an ...

Ich habe eine funktionierende Typo3 Installation. Alles funtkioniert wunderprächtig.

Nur jetzt komm ich an die Stelle, dass ich für die bestehende Website eine neue Sprache angelegt habe.
Dementsprechend soll z.B. der Footer sprachenabhängig eingebunden werden.

ich habe einen <div>-container mit der id=footer und einen Marker der ###FOOTER### heißt.

Allerdings bin ich gerade warscheinlich zu unfähig per Typoscript an der Stelle ein anderes Template einbinden zu lassen.

Hier mal mein Typoscript-auszug davon:

page.40 {
  temp.subtemplate = FILE
  temp.subtemplate = TEMPLATE
  temp.subtemplate.file = fileadmin/templates/lang/pl/footer.html
  workOnSubpart = FOOTER
  marks.FOOTER = syles.content.get
}

Über Hilfe wäre ich sehr dankbar...

MfG
Der_Chris

Chrissli ·

So ?

page.40 {
  temp.subtemplate = TEMPLATE
  temp.subtemplate { 
    template = FILE
    template.file = fileadmin/templates/lang/pl/footer.html    
    marks.FOOTER < syles.content.get
  }
}
Der_Chris ·

Funktioniert leider nicht ...

Ich werde noch wahnsinnig. In der footer.html steht rein nur HTML Content. Gibt es ne andere Lösung, wie ich sprachenspezifisch andere Footer einbauen kann?

Lg
Der_Chris

Chrissli ·

Oh, das hab ich übersehen,
das lang hier variabel sein soll 🙂

Evtl. kannst du mit

page.40 {
  temp.subtemplate = TEMPLATE
  temp.subtemplate { 
    template = FILE
    template.file = fileadmin/templates/de/pl/footer.html    
    marks.FOOTER < syles.content.get
  }
}

[globalVar = GP:lang = en]
page.40.temp.subtemplate.template.file = fileadmin/templates/en/pl/footer.html
[global]

das aktuelle Footer-Template switchen?

Der_Chris ·

Also.. Glaub du verstehst mich grad bissl falsch 😉

"lang" ist keine Variable, sondern ein Ordner im Ordner "/fileadmin/templates/".
"pl" ist der Ordner für die Polnische Sprache, in dem dann die Sprachenspezifischen Dinge liegen sollen ... z.B.: die "footer.html"

Das Problem ist, dass wenn ich deinen Code so verwende auf der Seite selber nichts rauskommt.
Ich will nur anhand von den Markern im HTML Template per Typoscript die "polnische Footer.html" einbinden. Und dies dann natürlich auch für die anderen Sprachen manuell im Typoscript anpassen.

Vielleicht ist das jetzt etwas klarer ...

Weil eine andere Möglichkeit fällt mir nicht ein, als in den verschiedenen Sprachen jeweiles den "richtig-sprachigen" Footer einzubauen ...

Muss ich in der "footer.html" noch irgendwas beachten? Nochmal Marker verwenden oder sowas?

Silkea ·

Falls du nur anderen Text haben möchtest, dann binde den einfach über eine language-Datei ein.

Falls du ein komplett anderes Template möchtest, würde ich eine if-Abfrage in Typoscript einbauen, in der du für die zweite Sprache ein anderes Template einbaust.
[globalVar = GP:L = 1]
...
[global]

Der_Chris ·

Ich möchte einen Anderen Text und andere Links einbauen, da im footer eine kleine Navigation drinsteckt. Allerdings sind da auch Seiten verlinkt, also brauche ich für jede Sprache den Footer einzeln.

Wie würde ich das mit der Language Datei machen? Bin leider totaler Anfänger in Typo3 ...

Chrissli ·

Hallo Chris,

"Anfänger" zählt nicht. Das bringen wir dir jetzt bei.
Wenn's sein muss mit sanfter Gewalt 🙂

Also ich würde das so lösen:

page = PAGE
page {
  typeNum = 0
  config {
    linkVars = L
    sys_language_uid = 0
    locale_all = de_DE
    language = de
  }
}
[globalVar = GP:L = 1]
page.config {
  sys_language_uid = 1
    locale_all = pl_PL
    language = pl
}
[global]

[globalVar = GP:L = 2]
page.config {
  sys_language_uid = 2
    locale_all = en_GB
    language = gb
}
[global]

... mehr von deienem code

page.40 {
  temp.subtemplate = TEMPLATE
  temp.subtemplate { 
    template = FILE
    template.file = fileadmin/templates/lang/default/footer.html    
    marks.FOOTER < syles.content.get
    marks.FOOTER.select.languageField = sys_language_uid # damit die inhalte aus der aktuellen sprache kommen
  }
}

# erste definierte sprache
[globalVar = GP:L = 1]
page.40.temp.subtemplate.template.file = fileadmin/templates/lang/pl/footer.html
[global]

# zweite definierte sprache
[globalVar = GP:L = 2]
page.40.temp.subtemplate.template.file = fileadmin/templates/lang/gb/footer.html
[global]

...

Die Werte im config-Teil sind legen die default-Werte fest, wenn keine Sprache gewählt ist, bzw.
welche GET-Variable die Sprach-ID beinhaltet ( hier: L).

Das [globalVar...] ist vereinfacht ausgedrückt eine IF/ELSE-Konstruktion:
[globalVar = GP:L = 2]
heisst soviel wie
"wenn globale variable aus (GET/POST) mit der Bezeichnung "L" den Wert 2 hat"
Du musst nur selbst wissen ob hinter der ID "1" englisch, polnisch oder sonstwas steckt.
Das funktioniert nach dem Prinzip: first come, first serve.
Soll heißen, die erste Sprache die (nach der Standardsprache) hinzugefügt wurde hat die ID 1,
die nächste bekommt die ID 2, usw.
Entsprechen musst du dann das Template bzw. (über die config) die Sprache überschreiben

Der_Chris ·

Also ...

Ich will das nicht automatisch machen lassen. Ich will bei jeder Sprache (ich habe in jeder Sprache das gleiche TS-Template) einfach nur sagen, dass an dem marker im HTML Template der Inhalt der footer.html rauskommt. Alles andere übersteigt das Stunden-Kontingent was dafür noch offen ist.

Ich will einfach nur wissen, was an meinem Code falsch ist, da im FE an der Position des Markers FOOTER nichts rauskommt.

Aber danke für deine Mühe 😉
Jetzt bin ich auf jeden Fall schon mal bissl schlauer 😉