typoscript条件typolink参数

时间:2014-10-02 08:04:19

标签: if-statement typo3 typoscript typolink

TS令人困惑:)

我正在尝试使用条件参数创建一个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>
    )
  }

正如你所看到的,我试图在typolink中添加一个IF语句,要求一种语言(至少,我认为这就是我所做的)。

问题是,根据当前的语言,我想要一个不同的链接(但其余的需要保持不变)。

我可以使用[globalVar = GP:L = 1],但这会产生巨大的开销,因为这个typolink只是更大的脚本部分的一小部分。

我试图谷歌我可以添加到参数的变量或常量,但没有给我一个有用的结果......

HELP! :)

3 个答案:

答案 0 :(得分:3)

要根据当前语言覆盖链接值,可以使用»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>
}

答案 1 :(得分: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
  }

同样,我对此并不满意,因为我必须为每种语言重复相同的块。我宁愿为链接和链接文本设置一个变量(使用后者的翻译)。

如果有人有更好的解决方案,我很乐意了解它......

答案 2 :(得分: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]