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

TYPO3 News分类菜单:列表视图获取选中分类及面包屑显示问题

解决TYPO3 News扩展列表视图的分类标题与面包屑问题

1. 在列表视图显示当前选中分类的标题

通过分类菜单进入列表视图时,当前分类ID会通过tx_news_pi1[overwriteDemand][categories]参数传递。你可以借助News扩展自带的news:category.data ViewHelper,通过ID获取分类对象并展示标题:

<!-- 在列表视图模板(如List.html)中添加 -->
<f:if condition="{settings.overwriteDemand.categories}">
    <news:category.data uid="{settings.overwriteDemand.categories}" as="currentCategory">
        <h1>{currentCategory.title}</h1>
    </news:category.data>
</f:if>

该ViewHelper会根据传入的分类ID,将对应分类对象赋值给currentCategory变量,之后可直接调用currentCategory的属性(如title、description)。

2. 在面包屑中添加选中的分类

方法一:Fluid模板自定义面包屑(适合自定义模板场景)

如果面包屑用Fluid渲染(结合VHS扩展的v:page.breadcrumb),可在现有面包屑逻辑后追加分类项:

<v:page.breadcrumb as="breadcrumbs">
    <nav class="breadcrumb">
        <ol>
            <!-- 渲染原有页面面包屑 -->
            <f:for each="{breadcrumbs}" as="crumb">
                <li><a href="{crumb.link}">{crumb.title}</a></li>
            </f:for>
            <!-- 追加当前分类 -->
            <f:if condition="{settings.overwriteDemand.categories}">
                <news:category.data uid="{settings.overwriteDemand.categories}" as="currentCategory">
                    <li class="active">
                        <a href="{f:uri.page(pageUid: '{data.uid}', additionalParams: {tx_news_pi1: {overwriteDemand: {categories: settings.overwriteDemand.categories}}})}">
                            {currentCategory.title}
                        </a>
                    </li>
                </news:category.data>
            </f:if>
        </ol>
    </nav>
</v:page.breadcrumb>

方法二:TypoScript配置(适合默认面包屑渲染)

如果面包屑通过TypoScript配置(如使用TYPO3核心HMENU),可在现有面包屑末尾添加分类项:

# 假设原有面包屑TypoScript为page.10
page.10.10 = RECORDS
page.10.10 {
    tables = sys_category
    source.data = GP:tx_news_pi1|overwriteDemand|categories
    dontCheckPid = 1
    conf.sys_category = TEXT
    conf.sys_category {
        field = title
        typolink {
            parameter.data = TSFE:id
            additionalParams = &tx_news_pi1[overwriteDemand][categories]={GP:tx_news_pi1|overwriteDemand|categories}
            useCacheHash = 1
        }
    }
    wrap = <li class="breadcrumb-item active">|</li>
    if.isTrue.data = GP:tx_news_pi1|overwriteDemand|categories
}

补充说明

你用f:debug看不到分类对象,是因为默认情况下News扩展的列表视图不会将当前分类对象传入模板,仅在settings.overwriteDemand中保留分类ID。通过上述方法反向获取分类完整数据,即可满足标题和面包屑的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:52:29