一、主要内容
百度站长工具里的链接提交有主动推送和手动推送两种方法,该工具于今年改版,改版后的链接提交取消了sitemap链接推送功能,那么怎么在dedecms中实现推送呢?下面给出了两种方法,一种是实时推送,另外一种是统一推送。
二、实验平台
1. 百度工具
2. dedecms 5.7
三、实现步骤
3.1 准备工作
首先登录百度站长,位置在网页抓取——>链接提交。
网页往下拉,就可以看到接口调用地址。
3.2 实时推送
实时推送是指每发表一篇文章之后就推送。打开article_add.php文件,其目录在dedecm安装目录/dede/下。搜索:
$artUrl = MakeArt($arcID, true, true,$isremote); if($artUrl=='') { $artUrl = $cfg_phpurl."/view.php?aid=$arcID"; }
在其下面添加下述代码:
else{ $urls[]='http://'.$_SERVER['HTTP_HOST'].$artUrl; $api = 'http://data.zz.baidu.com/urls?site=你的域名&token=准入密钥'; $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); }
修改上述域名和密钥,也就是3.1步中的接口调用地址。保存,替换原文件(替换之前记得备份)。这样,每次发布文章后,就会主动推送该篇文章的链接。
3.3 统一推送
统一推送是指将一段时间内(如一天时间)发布的文章一次性推送给百度站长。其实现步骤:将下述代码复制保证在一个php文件里,并按照下述注释处的内容根据自己网站的参数修改,最后将该文件上传到网站根目录,然后在浏览器打开你的域名/该文件来实现统一推送。
<?php //(1)若将dedecms安装在子目录,则需修改下述引用 require_once ("include/common.inc.php"); require_once ("include/arc.partview.class.php"); require_once('include/charset.func.php'); $year = date("Y"); $month = date("m"); $day = date("d"); $dayBegin = mktime(0,0,0,$month,$day,$year);//当天开始时间戳 $dayEnd = mktime(23,59,59,$month,$day,$year);//当天结束时间戳 //(2)将下面2处表头修改为自己的 $query = "SELECT arch.id,types.typedir FROM dede_arctype as types inner join dede_archives as arch on types.id=arch.typeid where pubdate<".$dayEnd." AND pubdate>".$dayBegin.""; //echo $query; $urls=""; $dsql->Execute('arch.id,types.typedir',$query); while($row = $dsql->GetArray('arch.id,types.typedir')) { //(3)将下边的www.sunev.cn换成你的网址 $urls.="http://www.sunev.cn".str_replace("{cmspath}","",$row['typedir'])."/".$row[id].".html".","; } /********* 用echo打印出获取到的链接 ***********/ $urls = substr($urls,0,-1); echo $urls; echo '<br />'; $urls = explode(",",$urls); //(4)下边的域名和密钥换成自己的 $api = 'http://data.zz.baidu.com/urls?site=www.8888ln.com&token=xxxxxxxxx'; $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; ?>
推送成功后会返回状态参数,如下图所示:
当天没有链接可推送时,则出现下图的状态:
注意:(1) 网络上找的代码第2个include没有(),我这里实现的时候出错了,所以加上了()。
(2) 最好不要经常重复推送,否则会有两个影响:第一,将浪费您提交的配额,每个站点每天可提交的数量是有限制的,如果您都提交了旧链接,当有新链接时可能因为配额耗尽无法提交。第二,如果您经常重复提交旧链接,我们会下调您的配额,您可能会失去主动推送功能的权限。
本作品(图文、音视频)由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系 yu.jianchun@qq.com