2016-11-10 42 views
1

我幾乎在每個項目中都有這樣的設置:默認情況下,TypoScript級聯到pagetree中的子節點。如果您想阻止將其應用於子節點,則一種解決方案是創建一個額外的TS模板,將其解除並將其包含爲「下一級模板」。防止級聯的TypoScript?

E.g.你想一些TS適用於特定的父頁面,而不是它的孩子:

temp.somemenu.wrap = **|** 

除了方針「上一個新的水平模板」,解決方案/黑客包括:

,如果你知道哪個級別您從開始:

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

如果你有PID和希望電線它在一個常數:

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

編輯:適應不變 - 這是一個相當強大的解決方案!

是不是有一些切換使TS設置不級聯?或者定義可級聯的級數?

喜歡的東西

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

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

這將意味着,TS是一種自我意識,知道上樹級別已設置。不知道這是甚至可能的。

它有道理嗎?

或者我錯過了一些現有的解決方案?

+0

你能描述一下你在說什麼解決辦法? 'temp.somemenu'是什麼菜單類型,你想在那裏包裝什麼? –

+1

1st:代替'[globalVar = TSFE:id = 80]'你應該使用'[page | uid = 80]'。第二:你可以在你的(設置)條件中使用TS常量,使其更加靈活:'[page | uid = {$ pid.special}]'。不要忘記:你也可以在條件'[page | uid = {$ pid.special},{$ pid.main}]''中使用多個值。但是,迪米特里問道:你想達到什麼目的?也許還有另一種解決方案。 –

+0

這是完美的!無論如何,我一直在使用常量中的pid。我不知道你可以在條件下使用它們。關於「爲什麼」:這個問題也是理論上的,你的解決方案對我來說已經足夠了。不過,我會發布我的用例,看到答案 – Urs

回答

1

不,這不適用於您在問題中已經提到的那些方法。原因是,TYPO3從頁面開始,向上看頁面樹,直到找到TypoScript模板。 (它將收集所有擴展模板並將其應用於第一個找到的根模板之上)。

因此,它永遠不會倒下,但只有起來。如果它會在某個級別後停止級聯,那麼應該如何爲這些網站使用TypoScript模板?它仍然需要一個配置來渲染頁面。

0

這個問題是理論上的,@pgampe回答它。

關於我的使用情況下,這裏是從@貝恩德 - 威爾克 - πφ,其工作只是正常

​​