密通学院

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6636|回复: 0

[开发] Discuz后台批量重建主题封面功能修改

[复制链接]
  • TA的每日心情
    可爱
    2018-6-29 10:04
  • 270

    主题

    289

    帖子

    7万

    铜板

    超级版主

    Rank: 8Rank: 8

    积分
    81374
    QQ
    发表于 2020-12-10 09:08:51 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

    x
    我们知道,dz默认的主题中如果发布图片2个以上的图片是在其中选择一张(据观察是取图片的宽度最大的作为封面)作为主题的封面,以供前台相应调用,对于某些情况,我们可能需要特定某个图片作为封面,显然默认的就不能实现这个效果,下面做出修改,实现第一张作为主题封面。
    1、找到admincp_counter.php,搜索
    1. } elseif(submitcheck('setthreadcover', 1)) {
    2.         $fid = intval($_GET['fid']);
    3.         $allthread = intval($_GET['allthread']);
    4.         if(empty($fid)) {
    5.                 cpmsg('counter_thread_cover_fiderror', 'action=counter', 'error');
    6.         }
    7.         $nextlink = "action=counter¤t=$next&pertask=$pertask&setthreadcover=yes&fid=$fid&allthread=$allthread";
    8.         $starttime = strtotime($_GET['starttime']);
    9.         $endtime = strtotime($_GET['endtime']);
    10.         $timesql = '';
    11.         if($starttime) {
    12.                 $timesql .= " AND lastpost > $starttime";
    13.                 $nextlink .= '&starttime='.$_GET['starttime'];
    14.         }
    15.         if($endtime) {
    16.                 $timesql .= " AND lastpost < $endtime";
    17.                 $nextlink .= '&endtime='.$_GET['endtime'];
    18.         }
    19.         $processed = 0;
    20.         $foruminfo = C::t('forum_forum')->fetch_info_by_fid($fid);
    21.         if(empty($foruminfo['picstyle'])) {
    22.                 cpmsg('counter_thread_cover_fidnopicstyle', 'action=counter', 'error');
    23.         }
    24.         if($_G['setting']['forumpicstyle']) {
    25.                 $_G['setting']['forumpicstyle'] = dunserialize($_G['setting']['forumpicstyle']);
    26.                 empty($_G['setting']['forumpicstyle']['thumbwidth']) && $_G['setting']['forumpicstyle']['thumbwidth'] = 214;
    27.                 empty($_G['setting']['forumpicstyle']['thumbheight']) && $_G['setting']['forumpicstyle']['thumbheight'] = 160;
    28.         } else {
    29.                 $_G['setting']['forumpicstyle'] = array('thumbwidth' => 214, 'thumbheight' => 160);
    30.         }
    31.         require_once libfile('function/post');
    32.         $coversql = empty($allthread) ? 'AND cover=\'0\'' : '';
    33.         $cover = empty($allthread) ? 0 : null;
    34.         $_G['forum']['ismoderator'] = 1;
    35.         foreach(C::t('forum_thread')->fetch_all_by_fid_cover_lastpost($fid, $cover, $starttime, $endtime, $current, $pertask) as $thread) {
    36.                 $processed = 1;
    37.                 $pid = C::t('forum_post')->fetch_threadpost_by_tid_invisible($thread['tid'], 0);
    38.                 $pid = $pid['pid'];
    39.         //setthreadcover($pid);
    复制代码
    在下面添加如下代码:
    1. $attachs = C::t('forum_attachment_n')->fetch_all_by_id('pid:' . $pid, 'pid', $pid, 'aid asc', true);
    2.         $attachs = array_values($attachs);
    3.         if($attachs[0]) {
    4.             setthreadcover($pid, 0, $attachs[0]['aid']);
    5.         } else {
    6.             setthreadcover($pid);
    7.         }
    复制代码
    上传更新即可。
    原理:系统默认调用的是setthreadcover($pid),而我们改成根据pid获取第一个图片附件的aid,然后传入setthreadcover函数,这个函数的第三个参数是决定用哪个附件来做封面的,如果为空则根据图片width来获取了。
    如果您有业务需求,可以和我联系:http://wpa.qq.com/msgrd?V=3&amp; ... yes&amp;from=discuz
    回复

    使用道具 举报

    快速回复: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    首页|Archiver|手机版|小黑屋|密通学院:专业网络营销服务商

    GMT+8, 2022-8-16 14:33 , Processed in 0.377929 second(s), 27 queries QQ

    Powered by XMT Inc. © 2015-2023 ArrayV1.0 豫ICP备17022382号

    系统运营:密城通 豫公网安备 41018302000212 号

    快速回复 返回顶部 返回列表