织梦cms百度主动推送链接(实时)使用方法

一、主要内容

百度站长工具里的链接提交有主动推送和手动推送两种方法,该工具于今年改版,改版后的链接提交取消了sitemap链接推送功能,那么怎么在dedecms中实现推送呢?下面给出了两种方法,一种是实时推送,另外一种是统一推送。

二、实验平台

1. 百度工具

2. dedecms 5.7

三、实现步骤

3.1 准备工作

首先登录百度站长,位置在网页抓取——>链接提交。

tijiao.jpg

网页往下拉,就可以看到接口调用地址。

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;
?>

推送成功后会返回状态参数,如下图所示:

dedecms百度主动推送链接(实时)

当天没有链接可推送时,则出现下图的状态:

Untitled.jpg

注意:(1) 网络上找的代码第2个include没有(),我这里实现的时候出错了,所以加上了()。

(2) 最好不要经常重复推送,否则会有两个影响:第一,将浪费您提交的配额,每个站点每天可提交的数量是有限制的,如果您都提交了旧链接,当有新链接时可能因为配额耗尽无法提交。第二,如果您经常重复提交旧链接,我们会下调您的配额,您可能会失去主动推送功能的权限。

您可能对以下内容感兴趣

发表评论

电子邮件地址不会被公开。 必填项已用*标注