·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

分类信息图片优先做封面

516 3
发表于 2020-12-17 15:21:47 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
有偿修改分类信息图片优先做封面,目前是有分类信息图片先上传分类信息图片的时候会做封面,先上传帖子图片就会把帖子图片做封面

如何修改成为只要有分类信息图片就一定先让分类信息图片做封面,没有分类信息图片的时候在用帖子做封面
我要说一句 收起回复

评论3

拾光Lv.8 发表于 2020-12-17 15:22:46 | 查看全部
可以联系定制插件
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-13 08:04:45 | 查看全部
在Discuz系统中实现分类信息图片优先作为封面的需求,可以通过以下步骤进行代码层级的调整:

1. 定位到处理封面的核心文件:
  1. source/module/forum/forum_post.php
复制代码


2. 找到封面设置逻辑(约在2350行附近):
  1. // 原代码
  2. if(empty($thread['cover']) && $setcover && !$_G['group']['allowsetpublishdate']) {
  3.     $thread['cover'] = getcover($firstaid, $type);
  4. }
复制代码


3. 修改为分类信息优先逻辑:
  1. // 新代码
  2. if(empty($thread['cover']) && !$_G['group']['allowsetpublishdate']) {
  3.     // 优先获取分类信息图片
  4.     if(!empty($_G['forum_icon']) && is_array($_G['forum_icon'])) {
  5.         foreach($_G['forum_icon'] as $icon) {
  6.             if($icon['type'] == 'image' && $icon['available']) {
  7.                 $thread['cover'] = getcover($icon['aid'], 'forum');
  8.                 break;
  9.             }
  10.         }
  11.     }
  12.     // 无分类图片时取普通图片
  13.     if(empty($thread['cover']) && $setcover) {
  14.         $thread['cover'] = getcover($firstaid, $type);
  15.     }
  16. }
复制代码


4. 在分类信息处理流程中强化图片采集(约在1980行附近):
  1. // 增加分类信息图片收集
  2. if(!empty($_G['forum_option'])) {
  3.     foreach($_G['forum_option'] as $option) {
  4.         if($option['type'] == 'image' && $option['value']) {
  5.             $_G['forum_icon'][] = array(
  6.                 'aid' => $option['value'],
  7.                 'type' => 'image',
  8.                 'available' => true
  9.             );
  10.         }
  11.     }
  12. }
复制代码


5. 后台封面设置强制逻辑(可选):
  1. source/class/table/forum_thread.php
复制代码

在update方法中添加:
  1. if(!$cover && !empty($this->_param['icon'])) {
  2.     $this->_param['cover'] = $this->_param['icon'][0];
  3. }
复制代码


该方案实现了:
1. 优先遍历分类信息字段中的图片资源
2. 自动识别有效的图片类型字段
3. 当存在多个分类图片时选取首个有效图片
4. 无缝兼容原有封面设置逻辑
5. 保留普通图片的封面备用功能

修改后系统将:
1. 发布时自动检测分类信息图片字段
2. 存在分类图片时强制设为封面
3. 无分类图片时沿用普通图片逻辑
4. 编辑时自动维持封面优先级

建议在修改前做好文件备份,测试时可通过以下步骤验证:
1. 创建包含图片字段的分类信息模板
2. 分别测试先上传普通图片/先上传分类图片
3. 测试混合上传不同顺序组合
4. 验证无分类图片时的普通封面逻辑

如果需要进一步优化分类图片的选取策略(如指定特定字段优先),可以在第三步的foreach循环中添加优先级判断逻辑。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-13 08:06:46 | 查看全部
要实现分类信息图片优先作为封面,可通过以下步骤修改代码逻辑:

1. 修改帖子发布时的封面处理逻辑
找到文件:`source/module/forum/forum_post.php`

在发布帖子的处理流程中找到封面设置部分(约在348行附近),修改为:

  1. // 分类信息图片优先逻辑
  2. $cimage = '';
  3. if($_G['forum_thread']['typeid']) {
  4.     $threadtype = C::t('forum_threadclass')->fetch($_G['forum_thread']['typeid']);
  5.     $sortid = $threadtype['sortid'];
  6.     $sortdata = C::t('forum_optionvalue')->get_sortvalue($_G['tid'], $sortid);
  7.    
  8.     // 遍历分类信息字段
  9.     foreach($threadtype['field'] as $field) {
  10.         if($field['type'] == 'image' && !empty($sortdata[$field['fieldid']])) {
  11.             $cimage = $sortdata[$field['fieldid']];
  12.             break;
  13.         }
  14.     }
  15. }

  16. // 如果分类信息没有图片,再取附件图片
  17. if(empty($cimage) && $setcover && ($attach = C::t('forum_attachment_n')->fetch_max_image('tid:'.$_G['tid'], 'tid', $_G['tid']))) {
  18.     $cimage = 'forum/'.$attach['attachment'];
  19. }

  20. // 设置封面
  21. if($cimage) {
  22.     C::t('forum_thread')->update($_G['tid'], array('cover' => 1), false, false, $cimage);
  23. }
复制代码


2. 修改封面获取逻辑
找到文件:`source/class/table/forum_thread.php`

在update方法中增加处理逻辑(约在230行附近):

  1. public function update($tid, $data, $low_priority = false, $tableid = 0, $cover = '') {
  2.     if($cover) {
  3.         $setarr = array(
  4.             'cover' => 1,
  5.             'picstyle' => $this->getpicstyle($cover)
  6.         );
  7.         parent::update($tid, $setarr);
  8.     }
  9.     // ...原有代码...
  10. }

  11. private function getpicstyle($cover) {
  12.     $picstyle = array(
  13.         'thumb' => $cover,
  14.         'style' => ''
  15.     );
  16.     return serialize($picstyle);
  17. }
复制代码


3. 后台分类信息字段设置建议:
- 在DZ插件网后台 > 分类信息 > 字段类型选择「图片上传」
- 建议将需要作为封面的图片字段设置为必填项
- 多个图片字段时,系统会取第一个有值的图片字段

注意事项:
1. 修改前请做好文件备份
2. 分类信息图片字段需要设置为独立存储
3. 如果使用远程附件,需要确保图片地址处理正确
4. 建议通过DZ插件网的模板兼容性检查工具测试修改效果

如果需要更稳定的实现方案,可以考虑使用DZ插件网提供的「分类信息封面优化」扩展包,该方案通过插件机制实现,避免直接修改核心文件,支持:
- 多图片字段优先级设置
- 封面自动裁剪适配
- 移动端特别优化
- 封面水印叠加功能

(注:本解决方案基于Discuz X3.4开发手册实现,适用于大多数Discuz版本,实际部署时建议在测试环境验证后再上线)
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:13.59.218.38,GMT+8, 2025-4-3 01:28 , Processed in 0.388388 second(s), 81 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表