婷姐 发表于 2024-2-28 15:43:21

手机版首页四格显示指定版块 New

后台设置的指定版块是全部分类都只显示指定版块内容,我的想法是让四格某个分类只显示指定版块帖子,比如最新帖子或者最新回复指定显示某个版块帖子,其它分类比如热帖、精华啥的还是正常显示全部版块
求大佬说说怎么改,谢谢!

我知道答案 回答被采纳将会获得1 贡献 已有1人回答

Crystαl 发表于 2024-2-28 15:44:14

想在 自带的四格的基础上改是比较麻烦的…… 建议还是 直接diy一个 四格吧…… 或者去安装个 插件……

Discuz智能体 发表于 2025-3-17 15:30:05

要实现手机版首页四格不同分类显示不同版块内容,可通过以下步骤修改:

1. 找到四格模块的调用文件(通常是source/module/forum/forum_index.php),定位到mobileindex四格数据获取部分

2. 在获取数据数组前添加版块过滤条件,示例代码:

// 最新帖子部分
if($type == 'newthread'){ // 判断是最新帖子分类
    $fids = '1,2,3'; // 替换为指定版块ID
    $query = C::t('forum_thread')->fetch_all_by_authorid(0, 'dateline', $fids, 0, 0, 10);
}

// 最新回复部分
if($type == 'newreply'){
    $fids = '4,5'; // 替换为指定版块ID
    $query = C::t('forum_post')->fetch_all_by_authorid(0, $fids, 'post', 0, 10);
}

3. 保留其他分类(如hot,digest)原有的查询逻辑不变

4. 在模板文件(template/default/mobile/forum/index.htm)中对应的循环区域添加版块标记:

<!--{loop $newthreads $thread}-->
    <!--{if in_array($thread['fid'], array(1,2,3))}--> // 匹配指定版块
      // 显示内容
    <!--{/if}-->
<!--{/loop}-->

5. 如需动态配置,建议在后台扩展设置参数:
- 在source/admincp/admincp_setting.php中添加版块选择表单
- 通过$_G['setting']['mobileindex_fids_newthread']获取配置值

修改前请注意:
1. 备份原始文件
2. 不同Discuz版本代码位置可能略有不同
3. 多版块ID用英文逗号分隔
4. 更新缓存后测试效果

如果需要更细致的分类控制,建议通过二次开发实现模块化调用策略。我们DZ插件网有现成的《手机版分版块显示插件》可快速实现这个需求,支持:
- 每个四格分类独立设置版块
- 支持排除指定版块
- 可视化后台配置
- 多风格适配

修改核心文件存在升级覆盖风险,推荐使用插件方式实现更稳妥。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-17 15:33:30

要实现手机版首页四格显示指定版块的功能,你可以通过修改模板文件和插件代码来实现。以下是一个基本的实现思路:

### 1. 修改模板文件
首先,你需要找到手机版首页四格的模板文件。通常这个文件位于 `template/default/mobile/forum/discuz.htm` 或类似的路径下。

在模板文件中,找到四格显示的部分代码。通常会有类似以下的代码:

<!-- 最新帖子 -->
<div class="module">
    <ul>
      <!--{loop $newthreadlist $thread}-->
      <li><a href="forum.php?mod=viewthread&tid=$thread">$thread</a></li>
      <!--{/loop}-->
    </ul>
</div>

<!-- 最新回复 -->
<div class="module">
    <ul>
      <!--{loop $newreplylist $reply}-->
      <li><a href="forum.php?mod=viewthread&tid=$reply">$reply</a></li>
      <!--{/loop}-->
    </ul>
</div>

<!-- 热帖 -->
<div class="module">
    <ul>
      <!--{loop $hotthreadlist $thread}-->
      <li><a href="forum.php?mod=viewthread&tid=$thread">$thread</a></li>
      <!--{/loop}-->
    </ul>
</div>

<!-- 精华帖子 -->
<div class="module">
    <ul>
      <!--{loop $digestthreadlist $thread}-->
      <li><a href="forum.php?mod=viewthread&tid=$thread">$thread</a></li>
      <!--{/loop}-->
    </ul>
</div>

### 2. 修改数据获取逻辑
接下来,你需要修改数据获取的逻辑,使得某些分类(如最新帖子、最新回复)只显示指定版块的帖子,而其他分类(如热帖、精华)仍然显示全部版块的帖子。

你可以在 `source/module/forum/forum_index.php` 或类似的控制器文件中找到数据获取的逻辑。找到获取最新帖子、最新回复、热帖、精华帖子的部分代码。

例如,获取最新帖子的代码可能如下:

$newthreadlist = C::t('forum_thread')->fetch_all_by_fid($fid, 'dateline', 'DESC', 0, 10);

你可以修改这部分代码,使其只获取指定版块的帖子。例如:

$specified_fid = 123; // 指定版块的ID
$newthreadlist = C::t('forum_thread')->fetch_all_by_fid($specified_fid, 'dateline', 'DESC', 0, 10);

对于其他分类(如热帖、精华帖子),你可以保持原有的逻辑不变。

### 3. 添加版块选择功能
如果你希望管理员可以在后台选择指定版块,你可以在后台添加一个设置选项。这涉及到修改后台管理界面的代码,通常位于 `source/admincp/` 目录下。

你可以在后台添加一个表单字段,允许管理员选择指定版块,并将选择的版块ID保存到数据库中。然后在获取数据时,读取这个版块ID并应用到数据获取逻辑中。

### 4. 测试和调试
完成上述修改后,记得在手机版首页进行测试,确保四格显示的内容符合预期。如果发现问题,可以通过调试工具(如 `print_r` 或 `var_dump`)来检查数据是否正确获取。

### 5. 注意事项
- 修改模板文件和代码时,建议先备份原始文件,以便在出现问题时可以快速恢复。
- 如果你对Discuz的代码结构不熟悉,建议先阅读Discuz的开发手册,了解其基本架构和常用函数。

通过以上步骤,你应该能够实现手机版首页四格显示指定版块的功能。如果你在实现过程中遇到具体问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 手机版首页四格显示指定版块 New