TYPO3 9.5 languageNavigation не принимает параметры запроса при переключении языка (например, News Detail) с использованием route-Enhancer - PullRequest
0 голосов
/ 08 апреля 2020

У меня плавная навигация по языку шаблонов, в которой я использую bootstrap, который выглядит следующим образом:

<f:for each="{config.lang.uid}" as="lang" iteration="iterator">
  <f:if condition="{languageNavigation.{iterator.index}.available}">
    <f:then>
      <a
        href="{languageNavigation.{iterator.index}.link}"
        class="dropdown-item{f:if(condition: '{languageNavigation.{iterator.index}.active}', then: ' active')}" 
        hreflang="{config.lang.hreflang.{lang}}"
        title="{config.lang.title.{lang}}"
      >
        <span> 
          <f:if condition="{settings.navbar.langFlags}">
            <core:icon identifier="{config.lang.flag.{lang}}" size="small" />
          </f:if>
          {config.lang.title.{lang}}
        </span>
      </a>
    </f:then>
    <f:else>
      <span class="dropdown-item text-muted">
        <f:if condition="{settings.navbar.langFlags}">
          <core:icon identifier="{config.lang.flag.{lang}}" size="small" />
        </f:if>
        {config.lang.title.{lang}}
      </span>
    </f:else>
  </f:if>
</f:for>

, когда я нахожусь в подробном представлении новостной статьи и переключаю язык, параметры запроса не переведены, поэтому он в основном отправляет меня на пустую страницу подробностей

Я часами пытался решить эту проблему, но, похоже, я не нашел решения …… Я использую маршрут энхансер для перевода запроса URL подробного просмотра в заголовок новости

самое близкое, что я нашел, это добавить следующее по ссылке:

addQueryString="TRUE" addQueryStringMethod="GET"

, но, похоже, это работает только в и я не могу использовать

href="{languageNavigation.{iterator.index}.link}"
in <f:link.page>

Я также пытался использовать , но в обоих методах я теряю цель переключения языка, даже если я использую lang = {config.lang.hreflang. {lang}}, который будет переводиться на en-US или de-DE в конфигурации сайта ……… просто отображает ссылку на страницу сведений на текущем языке для всех ссылок в меню

любая помощь? Я думаю, что достиг своих возможностей, чтобы решить эту проблему, я был бы благодарен за любое решение

----------------- Пример ---- --------------

Допустим, у меня есть следующий URL, который является страницей с подробным представлением плагина новостей статьи:

https://my.domain/news/detail/news-title

Когда я go перехожу к языковой навигации по этой странице, отображаются следующие домены:

EN: https://my.domain/news/detail/
DE: https://my.domain/de/news/detailansicht/

, поэтому заголовок / news в конце в основном теряется

Если я Я нахожусь только на немецком сайте, и я стою на странице списка новостей:

https://my.domain/de/news/

оттуда, все ссылки отображаются правильно, поэтому, если я go на элемент списка рассматриваемой статьи он отправил бы мне по адресу:

DE: https://my.domain/de/news/detailansicht/news-title

Итак, вот что я имею в виду с вопросом, проблема появляется только тогда, когда я уже на странице подробного просмотра, и я хочу переключить язык с помощью navbarmenu .

вместо рендеринга

https://my.domain/LANG/news/detail/news-title рендеринг

https://my.domain/LANG/news/detail/

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Вы пробовали LanguageMenuDataProcessor? С этим ссылки все в порядке. См .: https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/ContentObjects/Fluidtemplate/Index.html?highlight=languagemenuprocessor#dataprocessing

В старых версиях TYPO3 обработка данных меню была

10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
   special = languages
   as = languageNavigation
}

Теперь используется

10 = TYPO3\CMS\Frontend\DataProcessing\LanguageMenuProcessor
10 {
   languages = auto
   as = languageNavigation
}

Это решил мою проблему, спасибо за подсказку @Thomas Löffler

Я также обновил свой шаблон, чтобы сделать код более простым, избавившись от итератора и его индекса:

<f:section name="Language">
  <li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" id="language" href="#" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
      <f:for each="{languageNavigation}" as="item">
        <f:if condition="{item.active}">
          <f:if condition="{settings.navbar.langFlags}">
            <core:icon identifier="{config.lang.flag.{item.languageId}}" size="small" />
          </f:if>
          <span class="nav-label">{item.title}</span>
        </f:if>
      </f:for>
    </a>
    <div class="dropdown-menu dropdown-menu-right mt-0 language-menu">
      <f:for each="{languageNavigation}" as="item">
        <f:if condition="{item.available}">
          <f:then>
            <a
              href="{item.link}" hreflang="{item.hreflang}" title="{item.title}"
              class="dropdown-item{f:if(condition: '{item.active}', then: ' active')}"
            >
              <f:if condition="{settings.navbar.langFlags}">
                <core:icon identifier="{config.lang.flag.{item.languageId}}" size="small" />
              </f:if>
              {item.title}
            </a>
          </f:then>
          <f:else>
            <span class="dropdown-item text-muted">
              <f:if condition="{settings.navbar.langFlags}">
                <core:icon identifier="{config.lang.flag.{item.languageId}}" size="small" />
              </f:if>
              {item.title}
            </span>
          </f:else>
        </f:if>
      </f:for>
    </div>
  </li>
</f:section>
0 голосов
/ 08 апреля 2020

Вы пробовали LanguageMenuDataProcessor? С этим ссылки все в порядке. См .: https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/ContentObjects/Fluidtemplate/Index.html?highlight=languagemenuprocessor#dataprocessing

...