DedeCMS后台文章管理列表接入百度熊掌号API推送的方法

在之前的《DedeCMS实现百度熊掌号API提交接口推送(PHP推送)》一文中,针对织梦的历史文章,余斗采用的是全部推送的方式,这样做的好处是可以一下子批量将允许数量范围内的历史文章全部推送出去,不足之处就是每次都会把所有的历史文章都推送一下,而且当网站历史文章数量很多,而每日推送数量有限制的时候,这个方法就很不实用了,今天余斗就结合百度熊掌号的历史推送功能和织梦后台文章列表页面功能整合起来,实现织梦的后台文章管理接入百度熊掌号API推送,需要修改五个文件(文章末尾有全部文件下载链接),改动之处有些多,大家在做修改之前一定要先复制备份一下,以防万一。

一、打开dede/templets/index_body.htm文件(dede为你网站后台登录目录,如有变动,自行修改),在104行左右加入代码:

<div
class=
“icoitem” style=
“background:url(images/manage1.gif) 10px 3px no-repeat;”><a href=
“content_listxzh.php”>熊掌号管理</a></div>

 

添加后的代码

添加完成后,到网站后台刷新一下,在后台主面板的快捷管理处可以看到多了“熊掌号管理”入口:

二、找到dede/content_list.php文件,复制一份命名为content_listxzh.php,打开命名后的文件,找到代码(大概在第231行):


//模板


if(empty($s_tmplets)) $s_tmplets =
‘templets/content_list.htm’;

$dlist->SetTemplate(DEDEADMIN.
‘/’.$s_tmplets);

 

修改为:


//模板


if(empty($s_tmplets)) $s_tmplets =
‘templets/content_listxzh.htm’;

$dlist->SetTemplate(DEDEADMIN.
‘/’.$s_tmplets);

 

就是把模板指向文件content_list.htm改为content_listxzh.htm

三、找到dede/ templets/ content_list.htm文件,复制一份命名为 content_listxzh.htm,打开命名后的文件,找到代码(大概在第103行):

    <a href=
“javascript:;” onClick=
“cAtts(‘attsDel’,event,this)”
class=
“coolbg”>&nbsp;删除属性&nbsp;</a>

 

修改为:

    <a href=
“javascript:;” onClick=
“cAtts(‘attsDel’,event,this)”
class=
“coolbg”>&nbsp;删除属性&nbsp;</a>

    <a href=
“javascript:xzh(0)”
class=
“coolbg”>&nbsp;百度熊掌号更新&nbsp;</a>

 

修改后的代码

此处是在文章列表页下方增加百度熊掌号推送按钮:

四、打开dede/js/list.js文件,在最后或者中间加入代码:


//百度熊掌号推送

    function xzh(aid){

        var qstr=getCheckboxItem();

       
if(aid==
0) aid = getOneItem();

        location=
“archives_do.php?qstr=”+qstr+
“&aid=”+aid+
“&dopost=xzh”;

}

 

添加后的代码

然后再找到代码(大概在第87行):

       
new ContextItem(
“删除文档”,function(){ delArc(aid); }),

 

修改为:

       
new ContextItem(
“删除文档”,function(){ delArc(aid); }),

       
new ContextItem(
“熊掌号更新”,function(){ xzh(aid); }),

 

添加后的代码

五、打开dede/archives_do.php文件,找到代码(大概在第267行):


/*————————–
//熊掌号更新
function xzh() { }
—————————*/



else if($dopost==
“xzh”)

{

        CheckPurview(
‘a_Check,a_AccCheck,sys_ArcBatch’);

        require_once(DEDEADMIN.
“/inc/inc_archives_functions.php”);

       
if( !empty($aid) && empty($qstr) ) $qstr = $aid;

       
if($qstr==
)

        {

                ShowMsg(
“参数无效!”,$ENV_GOBACK_URL);

                exit();

        }

        $arcids = preg_replace(
“#[^0-9,]#”,
, preg_replace(
“#`#”,
‘,’, $qstr));

        $query =
“Select arc.id,arc.title,arc.shorttitle,arc.typeid,arc.ismake,arc.senddate,arc.arcrank,arc.money,arc.filename,arc.litpic,

                                                t.typedir,t.
typename,t.namerule,t.namerule2,t.ispart,t.moresite,t.siteurl,t.sitepath,t.isdefault,t.defaultname

                                                from `dede_archives` arc left join dede_arctype t on arc.
typeid=t.id

                        WHERE arc.id in($arcids)
“;

        $dsql->SetQuery($query);

        $dsql->Execute();

   

        $data=array();

       
while($row = $dsql->GetArray())

        {

   

                        $preRow=$row;

                          $data[]=GetFileUrl($preRow[
‘id’],$preRow[
‘typeid’],
,$preRow[
‘title’],

                                                        $preRow[
‘ismake’],
0,$preRow[
‘namerule’],$preRow[
‘typedir’],$preRow[
‘money’],$preRow[
‘filename’],

                                                        $preRow[
‘moresite’],$preRow[
‘siteurl’],$preRow[
‘sitepath’]);

                   

        }

   

                $urls=$data;

                $api =
‘http://data.zz.baidu.com/urls?appid=你的熊掌号id&token=你的Token码&type=batch’;

                $ch = curl_init();

                $options = array(

                        CURLOPT_URL => $api,

                        CURLOPT_POST =>
true,

                        CURLOPT_RETURNTRANSFER =>
true,

                        CURLOPT_POSTFIELDS => implode(
“\n”, $urls),

                        CURLOPT_HTTPHEADER => array(
‘Content-Type: text/plain’),

                );

                curl_setopt_array($ch, $options);

                $result = curl_exec($ch);

                echo $result;

   

        ShowMsg($result,$ENV_GOBACK_URL);

        exit();

}

 

注意一定要把百度熊掌号的ID和Token码换为自己的:

最后可以测试一下推送结果,显示成功success则代表此功能已经实现:

推送成功反馈

以上过程就是把百度熊掌号API接口集成到织梦后台的文章管理列表的实现方法,其他任何API接口都可以按照这个思路操作。

上述修改文件分享:文件下载