实现发布文章同步Ping搜索引擎的Behavior

使用thinkphp的行为扩展Ping搜索引擎服务 Ping搜索引擎可以在发布新文章的同时通知搜索引擎,其实最主要的是通知搜索引擎,这篇文章是我原创的,当然了,搜索引擎不是你告诉他原创就原创了,但如果文章是原创的话好处当然是有的。

今天就用ThinkPHP的行为来实现Ping,其实代码很简单,也可以自行添加不同的搜索引擎Ping地址。 上代码:

<?php
defined('THINK_PATH') or exit();

class pingBehavior extends Behavior{
    // 先定义要Ping的地址
        // @author LiaoCaiXin
        // blog_name 站点名称
        // blog_home 站点地址
        // blog_url     文章地址
        // rss_url        站点rss地址
    protected $services = array(
        'baidu' =--> 'http://ping.baidu.com/ping/RPC2',
        'google' => 'http://blogsearch.google.com/ping/RPC2',
        'bloglines' => 'http://www.bloglines.com/ping'
        );
       //拼接xml
       //@author LiaoCaiXin
    public function run(&$data){
        $xml = '<!--?xml version="1.0" encoding="UTF-8"?-->
        <methodcall>
        <methodname>weblogUpdates.extendedPing</methodname>
        <params>
        <param><value>' . $data['blog_name'] . '</value>
        <param><value>' . $data['blog_home'] . '</value>
        <param><value>' . $data['blog_url'] . '</value>
        <param><value>' . $data['rss_url'] . '</value>
        </params>
        </methodcall>';
        $xml_baidu = '<!--?xml version="1.0" encoding="UTF-8"?-->
        <methodcall>
        <methodname>weblogUpdates.extendedPing</methodname>
        <params>
        <param><value><string>' . $data['blog_name'] . '</string></value>
        <param><value><string>' . $data['blog_home'] . '</string></value>
        <param><value><string>' . $data['blog_url'] . '</string></value>
        <param><value><string>' . $data['rss_url'] . '</string></value>
        </params>
        </methodcall>';
        foreach($this->services as $k => $s){
            $s = trim($s);
            if(!empty($s)){
                $c = curl_init();
                $header = array(
                    "Content-type: text/xml;charset=\"utf-8\"",
                    "Accept: text/xml"
                    );
                curl_setopt_array(
                    $c,
                    array(
                        CURLOPT_URL => $s,
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_POST => true,
                        CURLOPT_HTTPHEADER => $header,
                        CURLOPT_POSTFIELDS => $k === 'baidu' ? $xml_baidu : $xml
                        )
                    );
                $content=curl_exec($c);
                curl_close($c);
            }
        }
    }
}

调用也很简单,在模型和控制器中调用都行,我是在控制器调用的。 示例代码:

//更新Ping
//需要更新的url列表
$update = array(
     'blog_name' => '魔力贝',
     'blog_home' => 'http://www.molibei.com',
     'blog_url' => U('article/index@www.molibei.com',array('id'=>$id)),
     'rss_url' => U('rss/index@www.molibei.com')
);
tag('ping',$update);

就可以实现发布文章的同时Ping搜索引擎了

标签: ping, 搜索引擎, seo, 行为, Behavior

添加新评论