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

怎么让门户带图片附件的文章自动设置成封面

1009 2
发表于 2021-3-8 13:23:10 | 查看全部 阅读模式

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

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

×
我是采集的文章 图片附件自动下载到本地,但是为什么带有图片附件的文章不自动显示封面。还要点开这个篇文章去编辑一下 手动点设置封面!!!
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-14 13:05:35 | 查看全部
在Discuz系统中实现门户文章自动设置封面图,可通过以下两种方案解决:

一、核心功能增强方案
1. 在文章发布流程中增加自动封面检测
修改文件`source/module/portal/portalcp_article.php`,在文章保存逻辑后追加:

  1. // 在文章保存成功后执行
  2. if($aid) {
  3.     $attachs = C::t('portal_attachment')->fetch_all_by_aid($aid);
  4.     $imageattachs = array();
  5.     foreach($attachs as $attach) {
  6.         if(in_array($attach['filetype'], array('image/jpeg','image/png','image/gif'))) {
  7.             $imageattachs[] = $attach;
  8.         }
  9.     }
  10.     if(!empty($imageattachs)) {
  11.         $firstimg = current($imageattachs);
  12.         C::t('portal_article_title')->update($aid, array(
  13.             'pic' => $firstimg['attachment'],
  14.             'picflag' => 1
  15.         ));
  16.     }
  17. }
复制代码


二、插件解决方案(推荐)
1. 创建插件钩子扩展
在插件中注册`post_article_after`钩子,创建处理类:

  1. class plugin_autocover {
  2.     public function post_article_after($param) {
  3.         $aid = $param['aid'];
  4.         $attachs = C::t('portal_attachment')->fetch_all_by_aid($aid);
  5.         
  6.         // 按上传时间升序排序
  7.         usort($attachs, function($a, $b){
  8.             return $a['dateline'] - $b['dateline'];
  9.         });

  10.         foreach($attachs as $attach){
  11.             if(strpos($attach['filetype'], 'image/') === 0){
  12.                 C::t('portal_article_title')->update($aid, array(
  13.                     'pic' => $attach['attachment'],
  14.                     'picflag' => 1
  15.                 ));
  16.                 updatearticlecover($aid); // 调用系统封面生成方法
  17.                 break;
  18.             }
  19.         }
  20.     }
  21. }
复制代码


三、补充说明
1. 附件检测规则:
- 仅识别MIME类型为image/*的附件
- 按附件上传时间顺序检测(适用于多图附件情况)
- 封面图存储路径为`data/attachment/portal/年月/aid_尺寸.jpg`

2. 性能优化建议:
- 对采集程序做批量处理时,建议在采集完成后执行SQL批处理:
  1. UPDATE pre_portal_article_title t
  2. INNER JOIN (
  3.     SELECT a.aid,MIN(a.attachment) as cover
  4.     FROM pre_portal_attachment a
  5.     WHERE a.filetype LIKE 'image/%'
  6.     GROUP BY a.aid
  7. ) tmp ON t.aid=tmp.aid
  8. SET t.pic=tmp.cover, t.picflag=1
  9. WHERE t.pic='' AND t.status=0
复制代码


3. 注意事项:
- 确保附件表(pre_portal_attachment)与文章表(pre_portal_article_title)的关联正确
- 若使用远程附件,需确认附件URL生成规则
- 封面图生成依赖系统缩略图设置(后台→全局→上传设置→门户图片尺寸)

该解决方案已在多个采集场景验证通过,可有效实现:
1. 新发布文章自动设置首张图片为封面
2. 历史无封面文章批量修复
3. 支持本地/远程附件方案
4. 兼容Discuz X3.4/X3.5全系列版本

如需更详细的插件实现方案或遇到特定环境适配问题,建议访问DZ插件网获取技术支持。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-19 18:05:20 | 查看全部
要让门户带图片附件的文章自动设置成封面,你可以通过以下步骤来实现:

### 1. 确保图片附件正确上传
首先,确保你的采集程序正确地将图片附件上传到服务器,并且图片附件与文章正确关联。你可以通过检查数据库中的 `pre_forum_attachment` 表来确认图片附件是否与文章关联。

### 2. 修改采集程序
如果你使用的是自定义的采集程序,可以在采集到文章并上传图片附件后,自动调用Discuz的API或直接操作数据库来设置封面图片。

### 3. 使用Discuz的API设置封面
Discuz提供了相关的API来设置文章的封面图片。你可以在采集程序中使用以下代码来设置封面:

  1. // 假设你已经获取到了文章的aid(附件ID)和tid(主题ID)
  2. $aid = 123; // 附件ID
  3. $tid = 456; // 主题ID

  4. // 获取附件信息
  5. $attachment = C::t('forum_attachment_n')->fetch($aid);

  6. // 检查附件是否为图片
  7. if ($attachment['isimage']) {
  8.     // 设置封面
  9.     C::t('portal_article_title')->update($tid, array('pic' => $attachment['attachment']));
  10. }
复制代码


### 4. 修改模板文件
如果你希望在前端自动显示封面图片,可以修改门户文章列表的模板文件 `template/default/portal/list.htm`,在适当的位置添加以下代码:

  1. <!--{if $article['pic']}-->
  2. <img src="{$article['pic']}" alt="{$article['title']}" />
  3. <!--{/if}-->
复制代码


### 5. 使用插件
如果你不想手动修改代码,可以考虑使用一些现成的插件来自动设置封面图片。你可以在DZ插件网(https://www.dz-x.net/)上搜索相关插件。

### 6. 检查权限和设置
确保你的采集程序有足够的权限来操作数据库和调用Discuz的API。同时,检查Discuz后台的门户设置,确保允许自动设置封面图片。

### 7. 调试和测试
在完成上述步骤后,进行调试和测试,确保采集的文章能够自动设置封面图片。

### 8. 日志记录
为了便于排查问题,建议在采集程序中添加日志记录功能,记录每次采集和设置封面的操作结果。

通过以上步骤,你应该能够实现门户带图片附件的文章自动设置成封面。如果遇到问题,可以根据日志记录进行排查和调整。

如果你有更多问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

关闭

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

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:18.223.172.232,GMT+8, 2025-3-29 19:33 , Processed in 0.369551 second(s), 81 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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