純代碼(非插件)使帝國CMS用百度API提交工具推送當天新內容
[重要通告]如您遇疑難雜癥,本站支持知識付費業務,掃右邊二維碼加博主微信,可節省您寶貴時間哦!
今天老鐵熊二想讓他自己站帝國也能自動推送,其實之前還真寫過關于插件的;
非插件用代碼使帝國cms生成文章時主動(自動)推送給百度增加流量的方法
今天是感覺有幾個方法也挺好的,需要綜合一下;
一、推送當天內容
1、登陸百度站長平臺,獲取到網站的推送接口;這個沒啥可說的,大家都會
2、在網站根目錄下新建一個文件夾,命名為“baiduapi”,并在baiduapi文件夾下創建一個baiduapituisong.php文件,代碼如下(數據庫配置請自行添加)
<?php header('Content-type:text/html;charset=utf-8'); define('DB_HOST','localhost'); define('DB_USER','替換成數據庫用戶'); define('DB_PASSWORD','替換成數據庫密碼'); define('DB_DATABASE','替換成數據庫名'); define('DB_PORT','3306'); function connect($host=DB_HOST,$user=DB_USER,$password=DB_PASSWORD,$database=DB_DATABASE,$port=DB_PORT){ $link=@mysqli_connect($host,$user,$password,$database,$port); if(mysqli_connect_errno()){ exit(mysqli_connect_error()); } mysqli_set_charset($link,'utf8'); return $link; } function execute($link,$query){ $result=mysqli_query($link,$query); if(mysqli_errno($link)){ exit(mysqli_error($link)); } return $result; } $start = date('Y-m-d 00:00:00'); $end = date('Y-m-d H:i:s'); $link=connect(); $query="SELECT * FROM `phome_ecms_news` WHERE `truetime` >= unix_timestamp( '$start' ) AND `truetime` <= unix_timestamp( '$end' )"; //獲取當天發表的數據 $result=execute($link,$query); while($data_list=mysqli_fetch_assoc($result)){ $urls[]="http://0mbx6.cn".$data_list['titleurl']."\n";//替換成自己的域名 } $api = 'http://data.zz.baidu.com/urls?site=http://0mbx6.cn&token=1234567890'; $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; ?>
二、xml地圖全部推送或按照數量推送
<?php header('Content-Type:text/html;charset=utf-8'); /** 只需修改這里面的兩個鏈接 **/ $xml_url = "http://0mbx6.cn/sitemap.xml"; // 這里修改你站點的xml地圖鏈接 $baidu_api = 'http://data.zz.baidu.com/urls?site=http://0mbx6.cn&token=1234567890';// 這里修改為你在百度站長獲取到的推送接口 /***只需修改這里面的兩個鏈接**/ $xmldata =file_get_contents($xml_url); $xmlstring = simplexml_load_string($xmldata,'SimpleXMLElement',LIBXML_NOCDATA); $value_array = json_decode(json_encode($xmlstring),true); $url = []; for ($i =0;$i < count($value_array['url']);$i++){ // echo $value_array['url'][$i]['loc']."<br/>"; $url[]= $value_array['url'][$i]['loc']; } //百度推送接口一次只支持推送2000條數據,所以超過2000條的話需要分組推送 $url_group = array_chunk($url,2000); $count=count($url_group); for($i=0;$i<$count;$i++){ $ch = curl_init(); $options = array( CURLOPT_URL => $baidu_api, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => implode("\n",$url_group[$i]), CURLOPT_HTTPHEADER => array('Content-Type:text/plain'), ); curl_setopt_array($ch, $options); $result =curl_exec($ch); curl_close($ch); echo $result; } ?>
三、選擇性推送
在帝國cms7.5源文件里面找到3個文件ecmsinfo.php、listinfo.php、userfun.php
ecmsinfo.php在目錄e/admin下面。
在任意一個elseif{....}后添加
elseif($enews=="Post_Baidu_sitemap")//文章實時發送百度
{
$id=$_POST['id'];
$urls=$_POST['titleurl'];
ePostBaiduSitemap($id,$urls);
}
listinfo.php在目錄e/data/html/list目錄下面。在
<input name="id[]" type="checkbox" id="id[]" value="<?=$r[id]?>"<?=$checked?>>
<input name="infoid[]" type="hidden" value="<?=$r['id']?>">
后面添加
<input name="titleurl[<?=$r[id]?>]" type="hidden" value='<?=$titleurl?>'>
還是這個文件里面,在最后一個</table>標簽前添加
<tr bgcolor="#FFFFFF">
<td height="25" colspan="8">
<input type="submit" name="Submit101" value="批量提交百度" onClick="document.listform.enews.value='Post_Baidu_sitemap';document.listform.action='ecmsinfo.php';"><font color="#666666"><p>備注:多選框藍色為未審核信息;發布者紅色為會員投稿;信息ID粗體為未生成,點擊ID可刷新頁面.</p></font></td>
</tr>
userfun.php在目錄e/class目錄下面。如果你這個文件里面是空的,直接用下面的代碼完全覆蓋即可。
<?php
//---------------------------用戶自定義標簽函數文件
//發送給百度時時更新-------------------------------
function ePostBaiduSitemap($id,$_urls){
$site = '0mbx6.cn';//你的網站域名
$token = '1234567890';//百度給的token
$newsurl = 'http://0mbx6.cn/';//你的網站地址,注意后面的斜杠/
$count = count($id);
if (empty($count))
{
printerror("未選擇信息ID", "", 1, 0, 1);
}
$urls=array();
for($i=0;$i<$count;$i++)
{
$id[$i] = (int)$id[$i];
if (array_key_exists($id[$i],$_urls)){
//$urls[] = $_urls[$id[$i]];
$urls[] = $newsurl.$_urls[$id[$i]];
}
}$api = "http://data.zz.baidu.com/urls?site=$site&token=$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);
$httpstat = curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpstat==200){
$obj = json_decode($result);
printerror("今天剩余{$obj->remain}條,成功提交{$obj->success}條", "", 1, 0, 1);
}else{
printerror('推送失敗', "", 1, 0, 1);
}
}
?>
這樣就是在每個單獨的欄目下面會有一個(批量提交百度)按鈕。選擇后提交即可。如果沒有顯示,就批量刷新一下后臺就哦可。
一下寫了三種方式推送給百度的方式方法,不知道大家都喜歡那種方式,我感覺喜歡更多的還得是插件吧;
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!