关于Discuz社区首页版块样式修改和热度推荐功能实现,以下是具体解决方案:
一、版块分区样式修改(CSS+模板调整)
1. 模板文件路径:
template/您的风格目录/forum/discuz.htm
2. 修改步骤:
在版块循环区域(约第48行附近)找到类似代码:
- <!--{loop $catlist $key $cat}-->
- <div class="bm bmw cl">...</div>
- <!--{/loop}-->
复制代码
建议修改为:
- <!--{loop $catlist $key $cat}-->
- <div class="custom-category">
- <div class="category-header">
- <h2>$cat[name]</h2>
- <!--{if $cat[description]}--><p class="xg1">$cat[description]</p><!--{/if}-->
- </div>
- <div class="custom-forumlist cl">
- <!--{loop $cat[forums] $forum}-->
- <div class="forum-item">
- <div class="forum-icon"><img src="{$forum[icon]}" /></div>
- <div class="forum-info">
- <h3><a href="forum.php?mod=forumdisplay&fid=$forum[fid]">$forum[name]</a></h3>
- <p>主题:$forum[threads] / 帖子:$forum[posts]</p>
- <div class="forum-desc xg1">$forum[description]</div>
- </div>
- </div>
- <!--{/loop}-->
- </div>
- </div>
- <!--{/loop}-->
复制代码
3. 配套CSS样式(添加到template/.../common/common.css):
- .custom-category {
- margin-bottom: 20px;
- background: #fff;
- border-radius: 8px;
- box-shadow: 0 2px 8px rgba(0,0,0,0.1);
- }
- .category-header {
- padding: 15px 20px;
- border-bottom: 1px solid #eee;
- }
- .custom-forumlist {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
- gap: 15px;
- padding: 20px;
- }
- .forum-item {
- display: flex;
- padding: 15px;
- background: #f8f9fa;
- border-radius: 6px;
- transition: all 0.3s;
- }
- .forum-item:hover {
- transform: translateY(-3px);
- box-shadow: 0 4px 12px rgba(0,0,0,0.1);
- }
- .forum-icon img {
- width: 48px;
- height: 48px;
- margin-right: 15px;
- }
- .forum-info h3 {
- margin: 0 0 5px;
- font-size: 16px;
- }
复制代码
二、热度推荐版块实现方案
1. 在分区标题添加推荐区:
修改category-header部分:
- <div class="category-header">
- <div class="flex-container">
- <h2>$cat[name]</h2>
- <div class="hot-forums">
- 热门版块:
- <!--{loop $cat[forums] $forum}-->
- <!--{if $forum[threads] >= 1000}-->
- <a href="forum.php?mod=forumdisplay&fid=$forum[fid]" class="hot-tag">$forum[name]</a>
- <!--{/if}-->
- <!--{/loop}-->
- </div>
- </div>
- </div>
复制代码
2. 添加CSS样式:
- .flex-container {
- display: flex;
- align-items: center;
- justify-content: space-between;
- }
- .hot-forums {
- font-size: 13px;
- color: #666;
- }
- .hot-tag {
- display: inline-block;
- margin-left: 10px;
- padding: 4px 12px;
- background: #ffe7e7;
- border-radius: 15px;
- color: #f56c6c;
- }
复制代码
三、进阶优化建议
1. 热度算法优化(需修改source/module/forum/forum_index.php):
在约第80行附近获取版块数据后添加排序:
- foreach($catlist as $key => $cat) {
- usort($catlist[$key]['forums'], function($a, $b) {
- return ($b['threads'] + $b['posts'] * 0.3) - ($a['threads'] + $a['posts'] * 0.3);
- });
- }
复制代码
2. 数据缓存机制:
建议在分区标题的热度推荐处添加缓存判断:
- <!--{eval $hot_forums = array_slice($cat['forums'], 0, 3);}-->
- <!--{loop $hot_forums $forum}-->
- ...
复制代码
修改前请注意:
1. 建议先备份原始文件
2. 模板修改后需到后台更新缓存
3. 不同Discuz版本可能有细微差异
4. 如需持久化修改建议创建子模板
如需更个性化的样式定制或功能开发,我们DZ插件网技术团队可提供有偿技术支持,具体需求可直接在站内提交工单描述。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |