在Discuz中实现特定板块仅显示悬赏帖,可通过以下两种方案实现:
方案一:后台模板直接过滤(推荐)
---------------------------------
1. 进入模板文件路径:
`template/您的模板目录/forum/forumdisplay_list.htm`
2. 在列表循环开始前(约第5行)添加过滤代码:
- <!--{if $forum['fid'] == 目标板块ID}-->
- <!--{eval $threadlist = array_filter($threadlist, function($t) { return $t['special'] == 3; });}-->
- <!--{/if}-->
复制代码
* 将`目标板块ID`替换为实际数字ID
* `special == 3`表示悬赏帖类型
方案二:插件机制动态过滤(更安全)
---------------------------------
1. 创建插件文件:
`source/plugin/threadfilter/discuz_plugin_threadfilter.xml`
- <?xml version="1.0" encoding="UTF-8"?>
- <root>
- <item id="filter">
- <hook class="forum/forum_forumdisplay" filename="threadfilter.class.php" include="plugin/threadfilter/threadfilter.class.php" />
- </item>
- </root>
复制代码
2. 创建处理文件:
`source/plugin/threadfilter/threadfilter.class.php`
- <?php
- class plugin_threadfilter {
- public static function forumdisplay_post_threadlist() {
- global $_G, $threadlist;
- if($_G['fid'] == 目标板块ID) {
- $threadlist = array_filter($threadlist, function($t) {
- return $t['special'] == 3;
- });
- }
- }
- }
复制代码
注意事项:
1. 修改前请备份原始文件
2. 方案一修改模板后需更新缓存
3. 方案二需在后台启用插件
4. 悬赏帖对应special=3,其他类型:
0-普通 1-投票 2-商品 4-活动 5-辩论
可通过在模板临时添加`{echo $thread['special']}`查看具体帖子类型值。建议使用插件方案以避免模板更新覆盖修改。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |