php get_cover,discuz帖子设置封面setthreadcover表pre_forum_threadimage

在Discuz 中有一项就是给帖子设置封面,很多情况下只能通过手动的方式去设置或者用提交POST请求的式去设置; 但是这都是调用DISCUZ的功能设置的;

有的时候并非万能的,也有用不到的时候;下面就给大家讲一下DISCUZ在设计封面的设计思路; 知道了思路,就可以自己用代码去实现;

好开始:

在设置了封面后,会在 pre_forum_threadimage 中插入一条这样的数据;

tid 是贴子的ID  后面的是对应的附件的地址;

在点击设置封面的时候会看到,程序会请求一个地址如下图

对是他:

http://localhost/dz/forum.php?mod=ajax&action=setthreadcover&aid=1&fid=36&infloat=yes&handlekey=setcover1&inajax=1&ajaxtarget=fwin_content_setcover1

在这个请求的连接中对我们重要的有  mod /action/fid/aid这几个参数; 请求的是Forum.php 那我们去找。

在Forum.php的最后,我们发现了下面一句代码:

require DISCUZ_ROOT.\'./source/module/forum/forum_\'.$mod.\'.php\';

根据这句代码和请求参数,我们找到了:source/module/forum/forum_ajax.php

这个文件,并在里面找到了setthreadcover的处理代码如下:

elseif($_GET[\'action\'] == \'setthreadcover\') { $aid = intval($_GET[\'aid\']); $imgurl = $_GET[\'imgurl\']; require_once libfile(\'function/post\'); if($_G[\'forum\'] && ($aid || $imgurl)) { if($imgurl) { $tid = intval($_GET[\'tid\']); $pid = intval($_GET[\'pid\']); } else { $threadimage = C::t(\'forum_attachment_n\')->fetch(\'aid:\'.$aid, $aid); $tid = $threadimage[\'tid\']; $pid = $threadimage[\'pid\']; } if($tid && $pid) { $thread =get_thread_by_tid($tid); } else { $thread = array(); } if(empty($thread) || (!$_G[\'forum\'][\'ismoderator\'] && $_G[\'uid\'] != $thread[\'authorid\'])) { if($_GET[\'newthread\']) { showmessage(\'set_cover_faild\', \'\', array(), array(\'msgtype\' => 3)); } else { showmessage(\'set_cover_faild\', \'\', array(), array(\'closetime\' => 3)); } } if(setthreadcover($pid, $tid, $aid, 0, $imgurl)) { if(empty($imgurl)) { C::t(\'forum_threadimage\')->...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值