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
相关产品推荐
相关产品推荐

