织梦接入百度主动推送,更新自动推送以及发布文章推送(同理 更新和删除也能推送)

发布的新文章直接推送给百度

首先打开文件 /dede/article_add.php 文件,这个是文章发布文件


然后搜索 //返回成功信息 在这句话的上面粘贴进去以下代码

  $urls = array(
    'http://www.bp456.cn'.$artUrl
); 
$api = 'http://data.zz.baidu.com/urls?site=XXXXXXXXX&token=XXXXXXXXXXXX'; //在百度站长平台获取主动推送的接口地址
$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);

首先关于这段代码解释一下,如果你的织梦站没有开启绝对地址,就按照这个代码复制就可以,如果开启了绝对地址,就不要在$artUrl前面拼接自己的网址了直接写$artUrl就可以。(织梦站默认不开启绝对地址,如果你没有印象开启过,直接复制我的代码就可以)。
然后把网址改成自己的,接口地址里面的XXXXXX需要根据百度给你提供的自己填写(建议直接复制整个api地址来替换我的,不建议只复制网址和Token,可能百度的api地址会更换
然后这样就可以实现自动推送功能,但是看不到百度的返回值。如果需要加入看到返回值
需要再搜索找到<u>已发布文章管理</u>,然后再这段话的下一行的下一行。粘贴<a><u>主动推送反馈结果".$result."</u></a>这段代码就可以了。

发布效果:


生成静态的时候批量进行推送

首先需要找到/dede/templets/makehtml_archives.htm文件。

<tr> 
      <td height="20" bgcolor="#FFFFFF">每页生成:</td>
      <td height="20" bgcolor="#FFFFFF"> <input name="pagesize" type="text" id="pagesize" value="20" size="8">
        个文件</td>
    </tr>

然后在这段html代码的后面增加上是否推送的选项代码

    <tr> 
      <td height="20" bgcolor="#FFFFFF">是否需要推送:</td>
      <td height="20" bgcolor="#FFFFFF"> <label><input name="tuisong" type="radio" value="0" checked="checked" />不推送 </label>  <label><input name="tuisong" type="radio" value="1" />推送 </label>   </td>
    </tr>

然后再打开/dede/makehtml_archives_action.php文件
在开头部分找到$serviterm = empty($serviterm)? "" : $serviterm;

在此代码下面增加两行代码,如下

$zongshu  = (empty($zongshu)  ? 0  : $zongshu);
$tuisong  = (empty($tuisong)  ? 0  : $tuisong);

这两行代码,一个是创建储存推送成功总数的变量,一个是用来接收是否推送的参数变量。


继续查找:

while($row=$dsql->GetObject('out'))
{    
    $tjnum++;
    $id = $row->id;
    $ac = new Archives($id);
    $rurl = $ac->MakeHtml($isremote);
}

复制其中的一段代码,进行查找,就可以找到这个循环。


然后在这段代码的前面添加$urls = array();



$rurl = $ac->MakeHtml($isremote);
这段代码的下一行加入
array_push($urls,"http://wwwbp456.cn".$rurl);


在刚才那个while循环的后面加入推送代码

if($tuisong==0){
    $urls = array();

}else{
    $api = 'http://data.zz.baidu.com/urls?site=XXXXXXXXXX&token=XXXXXXX'; //在百度站长平台获取主动推送的接口地址
    $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);
    $result_arr=json_decode($result,true); 
    if(!isset($result_arr['success'])){$result_arr['success']=0;}
    $zongshu = $zongshu + $result_arr['success'];
}

接口地址里面的XXXXXX需要根据百度给你提供的自己填写(建议直接复制整个api地址来替换我的,不建议只复制网址和Token,可能百度的api地址会更换


继续搜索:
$nurl = "makehtml_archives_action.php?endid=$endid&startid=$startid&typeid=$typeid";
替换为
$nurl = "makehtml_archives_action.php?zongshu=$zongshu&tuisong=$tuisong&endid=$endid&startid=$startid&typeid=$typeid";


继续搜索:
ShowMsg(" 完成所有创建任务!
把那一整句,看好了,把搜索到的那一整句替换为
ShowMsg(" 完成所有创建任务!,推送成功总数: $zongshu <br>百度返回信息:$result <br> 生成文件:$totalnum 总用时:{$ttime} 分钟。","javascript:;");

到此教程结束。
效果预览:

需要批量推送的时候,就到更新文档里,生成相应的文章就可以了。生成的过程中就会推送。

其实百度还提供了,当文章修改和文章删除的推送接口。看到这里,懂的可能明白了,可以通过修改关键核心代码,来实现文章修改和删除的推送。等用到有需求的时候,在更新修改和删除吧。

发表评论 / Comment

用心评论~