0

我有一个流畅的模板语言导航,在其中我使用引导程序,如下所示:

<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"

但这似乎只适用于 < f:link.page > 我不能使用

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

我也尝试过 <link.typolink> ,但是在这两种方法中我都失去了语言切换目标,即使我使用 lang={config.lang.hreflang.{lang}} 这将转换为 en-US 或站点配置中的 de-DE…………它只是为菜单中的所有链接呈现当前语言的详细页面链接

有什么帮助吗?我想我已经达到了解决这个问题的能力,我将不胜感激任何解决方案

- - - - - - - - -例子 - - - - - - - - -

假设我有以下 URL,这是一个带有文章的新闻插件详细视图的页面:

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

当我转到此页面的语言导航时,呈现的域是:

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

所以,最后的 /news-title 基本上会丢失

如果我只在德语网站上导航并且我站在新闻列表页面中:

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

从那里,所有链接都正确呈现,所以如果我转到相关文章的列表项,它会将我发送到:

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

所以,这就是我对这个问题的意思,只有当我已经在详细视图页面中并且我想使用导航栏菜单切换语言时才会出现问题。

而不是渲染

https://my.domain/LANG/news/detail/news-title它呈现

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

4

2 回答 2

2

您是否尝试过 LanguageMenuDataProcessor?有了它,链接都是正确的。请参阅: https ://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/ContentObjects/Fluidtemplate/Index.html?highlight=languagemenuprocessor#dataprocessing

在较旧的 TYPO3 版本中,菜单的 DataProcessing 是

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>
于 2020-04-08T15:29:58.763 回答
0

您是否尝试过 LanguageMenuDataProcessor?有了它,链接都是正确的。请参阅:https ://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/ContentObjects/Fluidtemplate/Index.html?highlight=languagemenuprocessor#dataprocessing

于 2020-04-08T07:46:23.440 回答