2014-10-02 41 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