今天素材abc小编为大家带来一个织梦的二开强大功能。那就是批量主动推送百度、熊掌,希望对大家有所帮助。
环境要求
PHP必须开启了curl扩展
百度主动推送(实时)可以缩短百度爬虫发现您站点新链接的时间,使新发布的页面可以在第一时间被百度收录
织梦程序我们可以在后台添加文档完成那一刻即时主动推送到百度或熊掌,也可以在后台文档列表里批量推送
最终效果
织梦百度主动推送教程
1、织梦网站后台-系统-基本参数,添加新变量,如果变量值未填写或者为空将不推送
变量名称
cfg_baidu_push
参数说明
百度推送接口
变量值
登录你的百度平台 https://ziyuan.baidu.com 获取接口调用地址
如图,注意你的站点域名要对应上
添加好变量是这样的
2、打开 /dede(后台目录)/inc/inc_archives_functions.php 在文件最末尾插入
/** * 百度主动推送 */function baidu_push($id="",$qstr=""){ global $cfg_multi_site,$cfg_basehost,$cfg_baidu_push; if(!empty($id) && !empty($cfg_baidu_push)) { if( !empty($id) && empty($qstr) ) $qstr = $id; if($qstr=='') { exit(); } $qstrs = explode('`',$qstr); $cfg_domain = $cfg_multi_site == 'N' ? $cfg_basehost : ''; $urls = array(); $i = 0; foreach($qstrs as $aid) { $i++; $arcrow = GetOneArchive($aid); $url = $cfg_domain.$arcrow['arcurl']; $urls[] = $url; $artlist .= $url."<br />"; } if($i>1) $artlist = ""; if(!empty($urls)){ $ch = curl_init(); $options = array( CURLOPT_URL => trim($cfg_baidu_push), CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => implode(" ", $urls), CURLOPT_HTTPHEADER => array('Content-Type: text/plain'), ); curl_setopt_array($ch, $options); $result = curl_exec($ch); curl_close($ch); $result = json_decode($result, true); if(isset($result['success'])){ $not_same_site = isset($result['not_same_site'][0]) ? " <font style='color:#f00;'>推送链接与百度绑定站点不一致</font> " : ""; $not_valid = isset($result['not_valid'][0]) ? " <font style='color:#f00;'>推送链接不合法</font> " : ""; return $not_same_site . $not_valid . '百度主动推送成功 '.$result['success'].' 条!当天剩余 '.$result['remain'].' 条可推送!'.$artlist; }else{ return '百度主动推送失败,错误码:'.$result['error'].'<a href=https://ziyuan.baidu.com/college/courseinfo?id=267&page=2#h2_article_title12 target=_blank>详情</a>'; } } return "没有数据被推送!"; } }
3、找到后台文档发布程序PHP文件
【普通文章】模型的是
/dede/article_add.php
【图片集】模型的是
/dede/album_add.php
【软件】模型的是
/dede/soft_add.php
【商品/自定义模型】模型的是
/dede/archives_add.php
根据你的需要在对应的php文件中找到
//返回成功信息
在它上面加入
if(!empty($cfg_baidu_push)) { $backurl .= "<p> ".baidu_push($arcID)."</p>"; }
继续找到
line-height:36px;height:36px
改成
line-height:36px;
修改完后如图这样
至此,织梦发布文档主动推送到百度功能完成。
需要做熊掌主动推送(实时)的小伙伴往下看
织梦熊掌主动推送教程
1、织梦网站后台-系统-基本参数,添加新变量,如果变量值未填写或者为空将不推送
变量名称
cfg_xiong_push
参数说明
熊掌推送接口
变量值
登录你的百度平台 https://ziyuan.baidu.com/ydzq/ 获取接口调用地址
注意你的站点域名已绑定上熊掌id
2、打开 /dede(后台目录)/inc/inc_archives_functions.php 在文件最末尾插入
/** * 熊掌主动推送 */function xiong_push($id="",$qstr=""){ global $cfg_multi_site,$cfg_basehost,$cfg_xiong_push; if(!empty($id) && !empty($cfg_xiong_push)) { if( !empty($id) && empty($qstr) ) $qstr = $id; if($qstr=='') { exit(); } $qstrs = explode('`',$qstr); $cfg_domain = $cfg_multi_site == 'N' ? $cfg_basehost : ''; $urls = array(); $i = 0; foreach($qstrs as $aid) { $i++; $arcrow = GetOneArchive($aid); $url = $cfg_domain.$arcrow['arcurl']; $urls[] = $url; $artlist .= $url."<br />"; } if($i>1) $artlist = ""; if(!empty($urls)){ $ch = curl_init(); $options = array( CURLOPT_URL => trim($cfg_xiong_push), CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => implode(" ", $urls), CURLOPT_HTTPHEADER => array('Content-Type: text/plain'), ); curl_setopt_array($ch, $options); $result = curl_exec($ch); curl_close($ch); $result = json_decode($result, true); if(isset($result['error'])){ return '熊掌主动推送失败,错误码:'.$result['error'].' message:'.$result['message']; }else{ $not_same_site = isset($result['not_same_site'][0]) ? " <font style='color:#f00;'>推送链接与熊掌绑定站点不一致</font> " : ""; $not_valid = isset($result['not_valid'][0]) ? " <font style='color:#f00;'>推送链接不合法</font> " : ""; return $not_same_site . $not_valid . '熊掌主动推送成功 '.$result['success_batch'].$result['success_realtime'].' 条!当天剩余 '.$result['remain_batch'].$result['remain_realtime'].' 条可推送!'.$artlist; } } return "没有数据被推送!"; } }
3、找到后台文档发布程序PHP文件
【普通文章】模型的是
/dede/article_add.php
【图片集】模型的是
/dede/album_add.php
【软件】模型的是
/dede/soft_add.php
【商品/自定义模型】模型的是
/dede/archives_add.php
根据你的需要在对应的php文件中找到
//返回成功信息
在它上面加入
if(!empty($cfg_xiong_push)) { $backurl .= "<p> ".xiong_push($arcID)."</p>"; }
继续找到,如果你前面已经删除过height:36px,可以跳过这一步
line-height:36px;height:36px
改成
line-height:36px;
修改完后如图这样
至此,织梦发布文档主动推送到熊掌功能完成。
需要批量推送的小伙伴请继续往下看
织梦后台文档列表添加批量推送至百度/推送至熊掌
效果如图
批量推送实现教程
在加入批量之前必须完成上面的【织梦百度主动推送教程】第1、第2步 和 【织梦熊掌主动推送教程】第1、第2步,否则以下教程无效
1、打开 /dede/templets/content_list.htm (软件模型和自定义模型是 /dede/templets/content_i_list.htm) 找到
删除属性
这一行,在它下面添加
<a href="javascript:baidu_push(0)" class="coolbg"> 推送至百度 </a><a href="javascript:xiong_push(0)" class="coolbg"> 推送至熊掌 </a><script type="text/javascript">function baidu_push(aid){ var qstr=getCheckboxItem(); if(aid==0) aid = getOneItem(); location="archives_do.php?aid="+aid+"&dopost=baidu_push&qstr="+qstr; }function xiong_push(aid){ var qstr=getCheckboxItem(); if(aid==0) aid = getOneItem(); location="archives_do.php?aid="+aid+"&dopost=xiong_push&qstr="+qstr; }</script>
如图
2、打开 /dede/archives_do.php 找到末尾一行的
?>
在它上面加入
else if($dopost=='baidu_push') { if( !empty($aid) && empty($qstr) ) $qstr = $aid; if($qstr=='') { ShowMsg('参数无效!',$ENV_GOBACK_URL); exit(); } require_once(DEDEADMIN.'/inc/inc_archives_functions.php'); $result = baidu_push($qstr); ShowMsg($result,$ENV_GOBACK_URL,0,5000); exit(); }else if($dopost=='xiong_push') { if( !empty($aid) && empty($qstr) ) $qstr = $aid; if($qstr=='') { ShowMsg('参数无效!',$ENV_GOBACK_URL); exit(); } require_once(DEDEADMIN.'/inc/inc_archives_functions.php'); $result = xiong_push($qstr); ShowMsg($result,$ENV_GOBACK_URL,0,5000); exit(); }
至此,批量推送教程全部完成。
软件发布有个BUG问题,就是发布软件时候不显示推送成功字样。下面来加段代码就可以解决。
找到 /dede/soft_add.php
<a href='catalog_main.php'><u>网站栏目管理</u></a>
在它下面加入
$backurl
这样就可以正常显示了。
需要在火车头里也加上自动采集后提交百度的功能请看这篇文章