首页 zblog正文

zblogPHP百度自动推送JS优化,规避重复推送问题

Admin zblog 2021-01-21 15:01:32 425
摘要:

本文技术源自张戈博客(https://zhangge.net/5100.html),但他博客使用的是WordPress版,Z-BlogPHP部分代码有所不同,本站将其转换为Z-BlogPHP版。本文适合使用Z-BlogPHP的用户和动手能力强的站长们!

提出问题

经常光临百度站长平台的站长们都知道,百度推出了一款自动推送JS功能,只要将此JS放在网站的header或者footer处,就能够实现自动推送,相比主动推送,使用更方便简单。但是,有没有用户考虑过,如果已经收录的页面又用自动推送代码推送一遍,效果是不是不好呢?下面本站就提供解决方案,避免更多的用户“中坑”!

解决方案

本人针对Z-BlogPHP此问题的分析

  • 定义测验百度是否收录的函数,返回值为true和false(如收录则返回true,否则返回false);
  • 引入测验百度是否收录的函数,如返回true则不添加推送代码,否则安装推送代码;
  • 在footer.php模板中载入函数。

具体实现步骤

1、将“测验百度有无收录的函数”和“引入测验百度是否收录并加载代码的函数” 添加到主题include.php的<?Php内:

  1. //测验百度有无收录的函数
  2. functionbaidu_check_recond($pageurl){
  3. $s='';
  4. $url='http://www.baidu.com/s?wd='.$pageurl;
  5. $curl=curl_init();
  6. curl_setopt($curl,CURLOPT_URL,$url);
  7. curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
  8. $rs=curl_exec($curl);
  9. curl_close($curl);
  10. if(strpos($rs,'提交网址')&&strpos($rs,'相关结果')){
  11. returnfalse;//如果存在提交网址和相关结果字眼,则表明百度未收录,返回false
  12. }else{
  13. returntrue;//否则返回true
  14. }
  15. }
  16. //引入测验百度是否收录并加载代码的函数
  17. functionbaidu_get_push($url){
  18. $check=baidu_check_recond($url);
  19. if($check==false){
  20. echo"<script>(function(){
  21. varbp=document.createElement('script');
  22. varcurProtocol=window.location.protocol.split(':')[0];
  23. if(curProtocol==='https'){
  24. bp.src='https://zz.bdstatic.com/linksubmit/push.js';
  25. }else{
  26. bp.src='http://push.zhanzhang.baidu.com/push.js';
  27. }
  28. vars=document.getElementsByTagName('script')[0];
  29. s.parentNode.insertBefore(bp,s);
  30. })();
  31. (function(){
  32. varsrc=(document.location.protocol=='http:')?'http://js.passport.qihucdn.com/11.0.1.js?af9e600e6a4ba6d33cd7f1b088210cf7':'https://jspassport.ssl.qhimg.com/11.0.1.js?af9e600e6a4ba6d33cd7f1b088210cf7';
  33. document.write('<scriptsrc=\"'+src+'\"id=\"sozz\"><\/script>');
  34. })();</script>";
  35. }
  36. }

2、在footer.php模板中载入函数(添加到网站模板的footer.php的</body>前):

  1. {php}
  2. $url=substr($zbp->host,0,-1).$zbp->currenturl;//获取当前页url
  3. baidu_get_push($url);
  4. {/php}

好了,已完成,赶紧试试吧,希望能够成功。当然,如果发现代码有错误支持,请及时给予反馈,谢谢!

拓展阅读

  • WordPress添加百度实时推送功能
© 编程脚本学习网