2014-10-02 69 views
0

TS令人困惑:)typoscript條件typolink參數

我試圖創建一個條件參數取決於語言的typolink。

10 = TEXT 
    10 { 
    typolink { 
     parameter = http://myLink.com 
     returnLast = url 
     if.isTrue.data = GP:L = 1 
    } 
    wrap (
      <li class="mod-metanav--item"> 
      <a class="mod-metanav--link" target="_blank" href="|"> 
       The Link 
      </a> 
      </li> 
    ) 
    } 

正如你所看到的,我想一個IF語句添加到typolink,要求語言(至少,這就是我認爲我做了)。

事情是,根據當前的語言,我想要一個不同的鏈接(但其餘的需要保持不變)。

我可以使用[globalVar = GP:L = 1],但這會產生一個巨大的開銷,因爲這個typolink只是一個更大的腳本部分的一小部分。

我想谷歌的變量或常量,我可以添加到參數,但沒有給我一個有用的結果......

HELP! :)

回答

1

要根據當前的語言覆蓋鏈接值,可以使用»lang«參數。

要取決於你可能需要使用一個CASE對象的當前語言更改鏈接網址...

10 = TEXT 
10 { 
    value = English 
    lang.de = German 
    lang.fr = French 
    typolink.parameter.cObject = CASE 
    typolink.parameter.cObject { 
     key.data = GP:L 
     1 = TEXT 
     1.value = http://example.com/german/bar/ 
     2 = TEXT 
     2.value = http://example.com/french/baz/ 
     default = TEXT 
     default.value = http://example.com/englisch/foo/ 
    } 
    typolink.ATagParams = class="mod-metanav--link" 
    typolink.extTarget = _blank 
    wrap = <li class="mod-metanav--item">|</li> 
} 

...或者你使用一個常數:

常數:

languagedependentlink = http://example.com/englisch/foo/ 
[globalVar = GP:L = 1] 
    languagedependentlink = http://example.com/german/bar/ 
[global] 
[globalVar = GP:L = 2] 
    languagedependentlink = http://example.com/french/baz/ 
[global] 

設置:

10 = TEXT 
10 { 
    value = English 
    lang.de = German 
    lang.fr = French 
    typolink.parameter = {$languagedependentlink} 
    typolink.ATagParams = class="mod-metanav--link" 
    typolink.extTarget = _blank 
    wrap = <li class="mod-metanav--item">|</li> 
} 
+0

真棒!這更有意義;)感謝您的幫助! – Swissdude 2014-10-02 10:22:32

+0

另一個問題,如果我可能:如果我想使用一個translation.xml,我將如何使用該值?我嘗試了value = LLL:fileadmin/content/translation.xml:theValue - 但這似乎不起作用...(呃 - 我知道這一定是基本的東西,但我找不到一個好的教程或其他資源 - 任何提示?) – Swissdude 2014-10-02 10:38:52

+0

不客氣!對於locallang:只需使用data屬性而不是value。 »data = LLL:fileadmin/content/translation.xml:theValue«(請參閱http://docs.typo3.org/typo3cms/TyposcriptReference/DataTypes/Gettext/Index.html#lll) – pixelbrackets 2014-10-06 11:40:23

0

而且,我正在回答我自己的問題 - 是否可以幫助其他人。

10 = TEXT 
    10 { 
    typolink { 
     parameter = myLinkInEnglish 
     returnLast = url 
    } 
    wrap (
      <li class="mod-metanav--item"> 
      <a class="mod-metanav--link" target="_blank" href="|"> 
       Click here 
      </a> 
      </li> 
    ) 
    if.value = 1 
    if.equals.data = GP:L 
    } 

再一次,我對此不滿意,因爲我必須爲每種語言重複相同的塊。我寧願有一個變量,我可以設置鏈接和鏈接文本(使用後者的翻譯)。

如果有人有更好的解決方案,我很樂意去了解它...

+0

Appa本來這個«有點»作品 - 我會推薦pixelbrackets的解決方案,雖然 – Swissdude 2014-10-02 10:45:57

0

嗯,也許我錯了,但它並不像巨大的開銷:

10 = TEXT 
    10 { 
    typolink { 
     parameter = http://worldwide.com 
     returnLast = url 
    } 
    wrap (
      <li class="mod-metanav--item"> 
      <a class="mod-metanav--link" target="_blank" href="|"> 
       The Link 
      </a> 
      </li> 
    ) 
} 

[globalVar = GP:L = 1] 
10.10.typolink.parameter = http://english.co.uk 
[end] 

[globalVar = GP:L = 2] 
10.10.typolink.parameter = http://german.de 
[end] 

[globalVar = GP:L = 3] 
10.10.typolink.parameter = http://french.fr 
[end] 
+0

嗯,據我瞭解的文檔,[globalVAr ...]方法不適用於大括號{...} - 這就是我的typolink是...所以pixelbrackets的解決方案是完美的...我也會將你的解決方案添加到我的書中,儘管 - 在其他情況下可能會有所幫助:)謝謝! – Swissdude 2014-10-02 10:30:12

+0

當然,因此它在外面 - 當然,如果您的'10 = TEXT'嵌套在某個對象中,您需要反映它並將條件移動到對象的_root_級別,即:'lib.somemenu.10.10.typolink。參數= http:// german.de' – biesior 2014-10-02 10:34:45

+0

好吧,我剛剛瞭解到另一件關於錯字的東西:) - 我真的不知道哪種方法會更好。我仍然更喜歡pixelbracket的方法,因爲它可以將東西放在一起。根據我有多少變數,你的方法可能會變得有點混亂......但這只是一個小菜鳥的看法:) – Swissdude 2014-10-02 10:44:54