phpcms v9添加百度自动推送JS代码并解决重复推送问题

作为一名站长,大家一定关注自己站点百度的收录,应该都知道百度搜索提供了一段自动推送的js代码,可将任意网页推送到搜索引擎,加快收录。如果直接把代码放在网站,推送的js代码会重复提交推送,这样是不是很不好,
找到phpcms\libs\functions\extention.func.php
添加如下函数

function baidu_check_record($url){       
         if(strpos($url,'.html')){ 
          $baidu_cache = getcache('baidurecord','baidu'); 
          $baidu_cache=unserialize($baidu_cache); 
          $pathurl=str_replace(APP_PATH,'',$url); 
          $array=explode('-',$pathurl); 
           if($array[1] && $array[2] && $baidu_cache[$array[1].'-'.$array[2]] == 1){ 
               return 1; 
           }else{ 
                 $url='http://www.baidu.com/s?wd='.$url; 
                $curl=curl_init(); 
                curl_setopt($curl,CURLOPT_URL,$url); 
                curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); 
                curl_setopt($curl, CURLOPT_ENCODING, 'gzip'); 
                $rsurl=curl_exec($curl); 
                curl_close($curl); 
                //如果抓取到的百度结果中不存在【提交网址】这个关键词,则认为该页面已被百度收录 
                if(!preg_match_all('/提交网址/i',$rsurl,$match1) && preg_match_all('/百度为您找到相关结果/i',$rsurl,$match2)){ 
                   $baidu_cache[$array[1].'-'.$array[2]]=1; 
                   $baidu_cache=serialize($baidu_cache); 
                    setcache('baidurecord',$baidu_cache,'baidu'); 
                    return 1; 
                } else { 
                    return 0; 
                } 
                  
           } 
            
          
         } 
       

 
function bdPushData($catid,$id) { 
    if ($_SERVER['HTTPS'] != "on") { 
        $currentUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]; 
    } else { 
        $currentUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]; 
    } 
    if(!$catid || !$id) return; 
    $get_url=go($catid,$id); 
    //判断是否是未收录页面,并且当前页面是否等于正规url地址(get_premalink) 
    if(baidu_check_record($get_url) == 0 && $currentUrl == $get_url) { 
        echo "<script>(function(){ 
            var bp = document.createElement('script'); 
            var curProtocol = window.location.protocol.split(':')[0]; 
            if (curProtocol === 'http') { 
                bp.src = 'http://zz.bdstatic.com/linksubmit/push.js';         
            } else { 
                bp.src = 'http://push.zhanzhang.baidu.com/push.js'; 
            } 
            var s = document.getElementsByTagName('script')[0]; 
            s.parentNode.insertBefore(bp, s); 
            })();</script>"; 
      } 
   } 
在页面底部加上如下代码:

{if $catid && $id} 
{bdPushData($catid,$id)} 
{/if} 

工作原理是文章加载时,会再百度搜索当前文章的url地址,如果百度未收录,查询结果中会匹配到“没有找到该URl。您可以直接访问”或"很抱歉,没有找到与"文字内容。当代码确认页面已经收录时,将会把文章的栏目catid和文章id保存成数组,存储到缓存,方便下次直接获取来判断是否已经推送过了。

百度自动推送服务对象及原理

JS链接推送代码以网页为最小对象,服务于全平台多终端,PC站和移动站均可使用。
安装代码的页面在任意平台(浏览器、微信、微博)被加载时,页面链接会被第一时间推送给百度,从而提高站点新内容的发现速度。
本文摘自[找寻记忆]网站,原文链接“https://www.liloufan.com/jishu/2016/09/22131.html”转载请保留出处.

PS: 大家余生也别多多指教了,都TM爱咋过咋过吧!BY:梦梵FLY-2023-03-23

检测到复制操作