You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多语言TYPO3应用中获取新闻标题并添加至面包屑导航

在多语言TYPO3应用中获取新闻标题并添加到面包屑导航

嘿,针对你在多语言TYPO3应用里要获取新闻详情页标题、并把它加到面包屑导航的需求,我给你整理几个实用的方案,都是日常开发里常用的:

一、获取当前多语言新闻标题

1. 在新闻详情模板中直接获取

如果你是在EXT:news自带的Detail模板(比如EXT:news/Resources/Private/Templates/News/Detail.html)里处理,直接用 {newsItem.title} 就能拿到对应语言的标题了。EXT:news已经自动适配了URL里的L参数,newsItem对象会加载当前语言的新闻记录。

2. 在全局模板中获取(比如面包屑所在的Header模板)

如果需要在全局模板里获取新闻标题,推荐用DataProcessing在页面TS里配置,自动加载当前新闻的多语言记录:

page.10.dataProcessing {
    10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
    10 {
      table = tx_news_domain_model_news
      where = uid={GP:tx_news_pi1/news}
      languageField = sys_language_uid
      as = currentNews
    }
}

配置后,在模板里就能通过 {currentNews.0.title} 获取当前语言的新闻标题了。这里的GP:tx_news_pi1/news会自动从URL里提取新闻ID,languageField确保加载对应L参数的语言版本。

二、将新闻标题添加到面包屑导航

方案1:扩展TYPO3默认面包屑

默认的面包屑只包含页面节点,我们可以在面包屑的Partial文件里追加新闻标题。比如你的面包屑Partial(Resources/Private/Partials/Breadcrumb.html)可以改成这样:

<ol class="breadcrumb">
  <f:for each="{breadcrumbs}" as="crumb" iteration="iterator">
    <li class="{f:if(condition: iterator.isLast, then: 'active')}">
      <f:if condition="!iterator.isLast">
        <a href="{crumb.link}">{crumb.title}</a>
      </f:if>
      <f:if condition="iterator.isLast">
        {crumb.title}
      </f:if>
    </li>
  </f:for>
  <!-- 追加新闻标题(仅在新闻详情页显示) -->
  <f:if condition="{currentNews}">
    <li class="active">{currentNews.0.title}</li>
  </f:if>
</ol>

这段代码会先渲染默认的页面面包屑,然后判断如果当前是新闻详情页(存在currentNews),就把新闻标题加到面包屑的最后。

方案2:用VHS扩展构建面包屑

如果你项目里用了VHS扩展,构建面包屑会更灵活:

<ol class="breadcrumb">
  <v:page.breadcrumb as="crumbs">
    <f:for each="{crumbs}" as="crumb">
      <li class="{f:if(condition: crumb.isLast, then: 'active')}">
        <f:if condition="!crumb.isLast">
          <a href="{crumb.link}">{crumb.title}</a>
        </f:if>
        <f:if condition="crumb.isLast">
          {crumb.title}
        </f:if>
      </li>
    </f:for>
  </v:page.breadcrumb>
  <!-- 添加新闻标题 -->
  <f:if condition="{newsItem}">
    <li class="active">{newsItem.title}</li>
  </f:if>
</ol>

如果是在新闻Detail模板里,直接用{newsItem.title}即可;如果是全局模板,替换成{currentNews.0.title}就行。

注意事项

  • 确保你的新闻记录已经创建了对应语言的翻译版本,否则TYPO3会 fallback 到默认语言(德语,L=0)的标题。
  • 检查URL里的L参数是否正确传递,TYPO3会根据这个参数加载对应语言的内容。
  • DataProcessing的配置可以全局生效,也可以只在新闻详情页的页面配置里生效,根据你的项目结构调整。

内容的提问来源于stack exchange,提问作者ruslansteiger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:27:17