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

TYPO3 tx_news:如何在详情模板按类别显示关联新闻?

嘿Ralf,我刚好对tx_news的关联新闻实现挺熟悉的,给你分享个简便的方法,不用写复杂的扩展,靠内置的工具就能搞定~

最简便的实现:用tx_news内置ViewHelper

这个方法不用修改PHP代码,直接在新闻详情模板(比如News/Detail.html)里添加代码就行:

步骤1:获取当前新闻的类别ID

先把当前新闻关联的所有类别ID转成逗号分隔的字符串,方便后续查询:

<f:variable name="currentCategoryUids" value="{newsItem.categories.uid -> f:format.cseperator()}"/>

步骤2:查询并渲染同类别关联新闻

用<news:news>这个内置ViewHelper,筛选出同类别、排除当前新闻、取3条的结果:

<news:news
    demand="{categoryConjunction: 'OR', categories: '{currentCategoryUids}', excludeAlreadyDisplayed: 1}"
    limit="3"
    as="relatedNews">
    <f:if condition="{relatedNews}">
        <h3>同类别关联新闻</h3>
        <ul class="related-news-list">
            <f:for each="{relatedNews}" as="news">
                <li>
                    <a href="{news.link}">{news.title}</a>
                    <p>{news.teaser -> f:format.crop(maxCharacters: 120)}</p>
                </li>
            </f:for>
        </ul>
    </f:if>
</news:news>

关键参数说明:

  • categoryConjunction: 'OR':如果当前新闻属于多个类别,只要匹配其中一个类别就会显示关联新闻
  • excludeAlreadyDisplayed: 1:自动排除当前正在查看的这条新闻,避免重复显示
  • limit="3":严格控制只显示3条关联新闻
进阶:自定义筛选逻辑(可选)

如果你需要更灵活的规则(比如只显示已发布的新闻、按发布时间倒序),可以手动构建Demand对象:

<f:variable name="demand" value="{f:object.create(className='GeorgRinger\\News\\Domain\\Model\\Dto\\NewsDemand')}"/>
<f:setter property="categories" target="{demand}" value="{currentCategoryUids}"/>
<f:setter property="categoryConjunction" target="{demand}" value="OR"/>
<f:setter property="excludeAlreadyDisplayed" target="{demand}" value="1"/>
<f:setter property="limit" target="{demand}" value="3"/>
<f:setter property="order" target="{demand}" value="datetime DESC"/> <!-- 按发布时间最新排序 -->

<!-- 渲染部分和上面一致 -->
<news:news demand="{demand}" as="relatedNews">
    <!-- ... 关联新闻列表代码 ... -->
</news:news>
小提示
  • 如果当前新闻没有关联任何类别,关联新闻区块会自动隐藏(因为{relatedNews}为空)
  • 确保你的tx_news版本是较新的,旧版本可能不支持部分参数
  • 同类别新闻不足3条时,会自动显示现有数量的新闻,不会出现空条目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:49:10