2016-11-10 4 views
1

Ich habe dies in fast jedem Projekt: TypoScript kaskadiert standardmäßig auf untergeordnete Knoten im Seitenbaum. Wenn Sie verhindern möchten, dass sie auf untergeordnete Knoten angewendet wird, besteht eine Lösung darin, eine zusätzliche TS-Vorlage zu erstellen, die sie rückgängig macht und sie als "Vorlage auf der nächsten Ebene" einfügt.Verhindert die Kaskadierung von TypoScript?

z. Sie wollen einige TS auf einen bestimmten übergeordneten Seite bewerben, aber nicht, dass es Kinder:

temp.somemenu.wrap = **|** 

Neben der „Vorlage auf der nächsten Ebene“ Ansatz, Lösungen/Hacks sind:

wenn Sie wissen, was Sie Ebene Start von:

[treeLevel = 2] 
    temp.somemenu.wrap = **|** 
[global] 

Wenn Sie die pid und wollen es in einem konstanten Draht:

[page|uid = {$targetPagePid}] 
    temp.somemenu.wrap = **|** 
[global] 

EDIT: angepasst an konstant - das ist eine ziemlich robuste Lösung!

Gibt es nicht einen Schalter, um eine TS-Einstellung NICHT Kaskade zu machen? Oder definieren Sie die Anzahl der Ebenen, auf die es kaskadieren kann?

So etwas wie

<INCLUDE_TYPOSCRIPT: source="path/to/my.ts" treeLevelsDown="0"> 

oder

[global treeLevelsDown = 0] 
    temp.somemenu.wrap = **|** 
[global] 

Dies würde bedeuten, dass die TS Art Selbst bekannt ist, zu wissen, auf dem Baumebene sie gesetzt wurde. Nicht sicher, ob das überhaupt möglich ist.

Macht es Sinn?

Oder fehlt mir eine bestehende Lösung?

+0

funktioniert gut Können Sie beschreiben, was Sie sprechen? Welcher Menütyp ist das 'temp.somenu' und was willst du dort einpacken? –

+1

1.: Statt '[globalVar = TSFE: id = 80]' sollten Sie '[page | uid = 80]' verwenden. Zweitens: Sie können TS-Konstanten in Ihren (Setup-) Bedingungen verwenden, um etwas flexibler zu sein: '[page | uid = {$ pid.special}]'. Und vergiss nicht: Du kannst auch mehrere Werte in den Bedingungen '[page | uid = {$ pid.special}, {$ pid.main}]' verwenden. Aber wie Dimitri fragte: Was willst du erreichen? Vielleicht gibt es eine andere Lösung. –

+0

Das ist perfekt! Ich arbeite sowieso mit pids in Konstanten. Mir war nicht bewusst, dass du sie unter Bedingungen verwenden kannst.Über das "Was für": Die Frage ist auch theoretisch und Ihre Lösung ist mehr als ausreichend für mich. Trotzdem poste ich meinen Anwendungsfall, siehe Antworten – Urs

Antwort

1

Nein, dies funktioniert nicht anders als die, die Sie bereits in Ihrer Frage erwähnt haben. Der Grund dafür ist, dass TYPO3 von einer Seite startet und den Seitenbaum nach oben blättert, bis er eine TypoScript Vorlage findet. (Es sammelt alle Erweiterungsvorlagen auf dem Weg und wendet sie über der ersten gefundenen Stammvorlage an).

Daher geht es nie nach unten, sondern nur nach oben. Wenn es nach einem bestimmten Level die Kaskadierung stoppen würde, was sollte als TypoScript Vorlage für diese Seiten verwendet werden? Es benötigt weiterhin eine Konfiguration, um die Seite zu rendern.

0

Die Frage ist theoretisch, und @pgampe antwortet darauf.

Über meinen Anwendungsfall ist hier die Lösung von @ bernd-Wilke-πφ, die

// just apply to page references 
[page|uid = {$pidReferencesList}] 

// add some additional js (a list filter) 
page.includeJSFooter { 
    refs = {$templatePath}/Resources/Public/additional_js/references.js 
} 
// add some markup 
lib.thecontent.wrap = <div id="items-list-wrapper">|</div> 

[global] 
Verwandte Themen