текстовое языковое меню через Typoscript

Я хочу нажать на текст «Английский», чтобы получить английскую версию веб-сайта. Раньше у меня было графическое меню:

lib.tslangmenu = HMENU
lib.tslangmenu {
  special = language
  special.value = 0,1,2
  addQueryString = 1
  1 = GMENU
  1.NO {
    XY = 24,16
    5 = IMAGE
    5.file = fileadmin/templates/images/deutsch.jpg || fileadmin/templates/images/englisch.jpg || fileadmin/templates/images/kroatisch.jpg
  }

  1.ACT < 1.NO
  1.ACT = 1
  1.ACT.wrap = <span class="langhide"> | </span>

  1.CUR < 1.ACT
  1.CUR = 1
}

Это работало до сих пор. Теперь я должен изменить меню на текстовое меню.

lib.tslangmenu {
  special = language
  special.value = 0,1,2
  special.normalWhenNoLanguage = 0
  addQueryString = 1
  1 = TMENU
  1.NO = 1
  1.NO.stdWrap.override = Deutsch || English || Hrvatski

  1.ACT < 1.NO
  1.ACT = 1
  1.ACT.stdWrap = <span class="langhide"> | </span>

  1.CUR < 1.ACT
  1.CUR = 1
}

Теперь обертка с span полностью игнорируется. Также меню теперь отображается следующим образом:

MyCurrentPageName Английский

Если я на немецком языке, слово deutsch перезаписывается текущим заголовком страницы. То же самое справедливо и для всех других языков. Я также попробовал TS, приведенный в этой статье в блоге. Но в настоящее время он делает то же самое. Как мне заставить это работать?


person testing    schedule 17.12.2012    source источник


Ответы (2)


Первая ошибка в вашей обертке: NO не обернута, поэтому не генерируется диапазон (для NO-элементов). Проблема с отображением заголовка страницы возникает из-за неправильного копирования. Линия

1.ACT < 1.NO

действительно должно быть

1.ACT < .1.NO

На всякий случай вот TS-конфиг, которым я активно пользуюсь:

lib.languageMenu = HMENU
lib.languageMenu {
  special = language
  special.value = 0,1

  1 = TMENU
  1 {
    wrap = <ul class="langMenu">|</ul>
    noBlur = 1
    NO = 1
    NO {
      linkWrap = <li class="menu-item normal">|</li>

      stdWrap.override = English || Deutsch
      stdWrap.htmlSpecialChars = 1
    }

    ACT < .NO
    ACT {
      doNotLinkIt = 1
      linkWrap = <li class="menu-item active">|</li>
    }

    # NO + Translation doesn't exist
    USERDEF1 < .NO
    USERDEF1.doNotLinkIt = 1

    # ACT + Translation doesn't exist
    USERDEF2 < .ACT
    USERDEF2.doNotLinkIt = 1
  }
}

С уважением,
Йост

person Jost    schedule 17.12.2012
comment
Я пытался использовать 1.ACT < .1.NO, но мне это не помогло. Но теперь я использовал ваш код, и он работает. Спасибо! - person testing; 18.12.2012
comment
Да, в 1.ACT < 1.NO точка почему-то не нужна, а в ACT < .NO нужна. Может быть, мне нужно немного прочитать этот синтаксис... - person Jost; 18.12.2012

Отметьте здесь со значком флага

lib.languageMenu = HMENU
lib.languageMenu{

     special = language
     special.value = 0,1
     protectLvar = 1
     special.normalWhenNoLanguage = 0
    # wrap = <div class="language"><ul>|</ul></div>
     1 = TMENU
     1 {
       NO = 1
       NO {


        # linkWrap = <li class="in-active">|</li> || <li class="in-active">|</li>
         stdWrap.override = {$germanLabel}<img alt="" src="typo3conf/ext/website_lctech/Resources/Public/images/german.png">|| {$englishLabel}<img alt="" src="typo3conf/ext/website_lctech/Resources/Public/images/english.png">
         doNotLinkIt = 1
         stdWrap.typolink.parameter.data = page:uid
         stdWrap.typolink.additionalParams = &L=0 || &L=1
         stdWrap.typolink.addQueryString = 1
         stdWrap.typolink.ATagParams =class="InActive"
         stdWrap.typolink.addQueryString.exclude = id,cHash,no_cache
         stdWrap.typolink.addQueryString.method = GET
         stdWrap.typolink.useCacheHash = 0
         stdWrap.typolink.no_cache = 0
         stdWrap.htmlSpecialChars = 0

#         normalWhenNoLanguage = 0
       }
       ACT = 1
       ACT < .NO
       ACT.stdWrap.typolink.ATagParams =class="Active"
       ACT.stdWrap.htmlSpecialChars = 0



     #  USERDEF1 < .NO
     #  USERDEF1.doNotLinkIt = 0
    }
}
person Bharat Parmar    schedule 12.04.2018