2014-10-02 5 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 - всего лишь часть большей части скрипта.

Я попытался Google для переменных или констант, которые я мог бы добавить к параметру, но ничего не дал мне полезный результат ...

HELP! :)

ответ

1

Чтобы переопределить значение ссылки в зависимости от текущего языка, вы можете использовать параметр «lang».

Чтобы изменить URL ссылки в зависимости от текущего языка вы можете захотеть использовать объект СЛУЧАЙ ...

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

+0

Другой вопрос, если я могу: если я хочу использовать translation.xml, как бы использовать значение? Я попробовал value = LLL: fileadmin/content/translation.xml: theValue - но это не похоже на работу ... (Uh - Я знаю, что это должно быть базовое, но я не смог найти хороший учебник или другой ресурс - любые подсказки?) – Swissdude

+0

Добро пожаловать! Для locallang: просто используйте свойство data вместо значения. »Data = LLL: fileadmin/content/translation.xml: theValue« (см. Http://docs.typo3.org/typo3cms/TyposcriptReference/DataTypes/Gettext/Index.html#lll) – pixelbrackets

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 это «своего рода» работает - я бы рекомендовал решение пиксельных брекетов, хотя – Swissdude

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 ... Итак, решение пикселей пикселей идеально подходит ... Я также добавлю свое решение в свою книгу, но может быть полезно в других случаях :) Спасибо! – Swissdude

+0

Конечно, поэтому он снаружи, конечно, если ваш '10 = TEXT' вложен в какой-то объект, вам нужно его отразить и переместить условие на уровень _root_ объектов, например .: lib.somemenu.10.10.typolink. parameter = http: // german.de' – biesior

+0

Хорошо, я только что узнал о том, что касается typoscript :) - Я действительно не знаю, какой подход будет лучше. Мне все еще нравится подход пиксельных кронштейнов, так как он держит вещи вместе. В зависимости от того, сколько переменных у меня есть, ваш подход может оказаться немного грязным ... но это просто взгляд noob :) – Swissdude

Смежные вопросы