纯代码(非插件)使帝国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[]="https://www.laoliang.net".$data_list['titleurl']."\n";//替换成自己的域名
}

$api = 'http://data.zz.baidu.com/urls?site=https://www.laoliang.net&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 = "https://www.laoliang.net/sitemap.xml"; // 这里修改你站点的xml地图链接
$baidu_api = 'http://data.zz.baidu.com/urls?site=https://www.laoliang.net&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 = 'www.laoliang.net';//你的网站域名
$token = '1234567890';//百度给的token
$newsurl = 'https://www.laoliang.net/';//你的网站地址,注意后面的斜杠/
$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号又微信号)右上方扫一扫可加博主微信

所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!

支付宝赞助
微信赞助

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如您下载该资源,行为将被视为对《免责声明》全部内容的认可->联系老梁投诉资源
LaoLiang.Net部分资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:service@laoliang.net
意在交流学习,欢迎赞赏评论,如有谬误,请联系指正;转载请注明出处: » 纯代码(非插件)使帝国CMS用百度API提交工具推送当天新内容

发表回复

本站承接,网站推广(SEM,SEO);软件安装与调试;服务器或网络推荐及配置;APP开发与维护;网站开发修改及维护; 各财务软件安装调试及注册服务(金蝶,用友,管家婆,速达,星宇等);同时也有客户管理系统,人力资源,超市POS,医药管理等;

立即查看 了解详情