织梦接入百度主动推送,更新自动推送以及发布文章推送(同理 更新和删除也能推送)
发布的新文章直接推送给百度
首先打开文件 /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:;");
需要批量推送的时候,就到更新文档里,生成相应的文章就可以了。生成的过程中就会推送。
其实百度还提供了,当文章修改和文章删除的推送接口。看到这里,懂的可能明白了,可以通过修改关键核心代码,来实现文章修改和删除的推送。等用到有需求的时候,在更新修改和删除吧。
共有 0 条评论