您好,欢迎访问一九零五行业门户网

Codeigniter Rss,网站地图,路由配置_PHP教程

_ _,今天在成果不错,完成了网站的三个功能,rss订阅,自动写网站地图,与路由的配置,好了,现在一 一记录下来.
一、路由配置
在未设定路由时,路径是这样的
[php] 
http://www.xiuxiandou.com/content/it/13533/硅谷传奇投资人讲述初创企业家易犯的4大错误
content =>controller,it=>method,13533=>id,硅谷传奇投资人讲述初创企业家易犯的4大错误=>title
http://www.xiuxiandou.com/content/it/13533/硅谷传奇投资人讲述初创企业家易犯的4大错误
content =>controller,it=>method,13533=>id,硅谷传奇投资人讲述初创企业家易犯的4大错误=>title
设置路由后,访问路径为:
[php] 
http://www.xiuxiandou.com/content-it-13533-硅谷传奇投资人讲述初创企业家易犯的4大错误
http://www.xiuxiandou.com/content-it-13533-硅谷传奇投资人讲述初创企业家易犯的4大错误
其它的类似,路径配置为
[php] 
/*sitemap使用*/  
$route['content-(:any)-(:num)'] = content/$1/$2;  
/*前台页面显示路由*/  
$route['content-(:any)-(:num)-(:any)'] = content/$1/$2/$3;
/*rss订阅路由*/  
$route['feed-rss-(:any)'] = feed/rss/$1;  
/*博客路由*/  
$route['blog-(:num)-(:any)'] = blog/blogview/$1/$2;  
$route['blog-blogtypes-(:any)']=blog/blogtypes/$1;
/**留言**/  
$route['me'] = indexs/me;  
/**模板**/  
$route[template]=indexs/template;  
/**今日更新**/  
$route[indexs-(:any)]=indexs/$1;
/*sitemap使用*/
$route['content-(:any)-(:num)'] = content/$1/$2;
/*前台页面显示路由*/
$route['content-(:any)-(:num)-(:any)'] = content/$1/$2/$3;
/*rss订阅路由*/
$route['feed-rss-(:any)'] = feed/rss/$1;
/*博客路由*/
$route['blog-(:num)-(:any)'] = blog/blogview/$1/$2;
$route['blog-blogtypes-(:any)']=blog/blogtypes/$1;
/**留言**/
$route['me'] = indexs/me;
/**模板**/
$route[template]=indexs/template;
/**今日更新**/
$route[indexs-(:any)]=indexs/$1;
二、rss
在libraries目录下创建rss.php文件,主要负责生成rss格式的数据内容
[php]  
load->helper('xml');  
            $ci->load->helper('text');
$xml_str=  
                    .;  
            if(!emptyempty($in_datas)){  
                    $xml_str.=  
                                ..$in_datas[feed_name].  
                                .  
                                ..$in_datas[feed_url].  
                                ..$in_datas[page_description].  
                                .zh-cn  
                                .1  
                                .hourly  
                                .copyright (c) xiuxiandou.com. all rights reserved.  
                                .http://www.xiuxiandou.com;  
                                if(!emptyempty($in_datas[xml_datas])){  
                                    foreach($in_datas[xml_datas] as $k => $v){  
                                        foreach($v as $xml){  
                                            $xml_str.=  
                                                    .subject).]]>  
                                                    ..site_url(content-$k-$xml->id-.xml_convert($ci->mytool->get_title($xml->subject))).  
                                                    ..site_url(content-$k-$xml->id-.xml_convert($ci->mytool->get_title($xml->subject))).  
                                                    .message, 600)).]]>  
                                                    ..date('y-m-d h:i:s',$xml->dateline).    
                                                    .$xml->url  
                                                    .;  
                                        }  
                                    }  
                                }  
                    $xml_str.=;
}  
            $xml_str.=;  
           return $xml_str;  
    }  
}
load->helper('xml');
            $ci->load->helper('text');
$xml_str=
                    .;
            if(!empty($in_datas)){
                    $xml_str.=
                                ..$in_datas[feed_name].
                                .
                                ..$in_datas[feed_url].
                                ..$in_datas[page_description].
                                .zh-cn
                                .1
                                .hourly
                                .copyright (c) xiuxiandou.com. all rights reserved.
                                .http://www.xiuxiandou.com;
                                if(!empty($in_datas[xml_datas])){
                                    foreach($in_datas[xml_datas] as $k => $v){
                                        foreach($v as $xml){
                                            $xml_str.=
                                                    .subject).]]>
                                                    ..site_url(content-$k-$xml->id-.xml_convert($ci->mytool->get_title($xml->subject))).
                                                    ..site_url(content-$k-$xml->id-.xml_convert($ci->mytool->get_title($xml->subject))).
                                                    .message, 600)).]]>
                                                    ..date('y-m-d h:i:s',$xml->dateline).  
                                                    .$xml->url
                                                    .;
                                        }
                                    }
                                }
                    $xml_str.=;
}
            $xml_str.=;
           return $xml_str;
    }
}
2、rss控制类
[php]  
mcom_model->query_bywhere(mymsg::bt_itinfo,array(riqi=>$this->mytool->get_ymd()));  
        $game=$this->mcom_model->query_bywhere(mymsg::bt_game,array(riqi=>$this->mytool->get_ymd()));  
        $blog=$this->mcom_model->query_bywhere(mymsg::bt_blog,array(riqi=>$this->mytool->get_ymd()));  
        $movie=$this->mcom_model->query_bywhere(mymsg::bt_movie,array(riqi=>$this->mytool->get_ymd()));  
        $book=$this->mcom_model->query_bywhere(mymsg::bt_book,array(riqi=>$this->mytool->get_ymd()));  
        $in_datas[xml_datas]=array(it=>$it,game=>$game,blog=>$blog,movie=>$movie,book=>$book);  
        $this->_comm($in_datas);  
    }  
    public function rss(){  
       $this->load->helper('xml');  
       $this->load->helper('text');  
       $key= $this->uri->segment(3);  
       $db_table= $key==it?bt_itinfo:bt_$key;  
       $table_exist=$this->mcom_model->table_exists($db_table);  
       if($table_exist){  
          $in_datas[xml_datas]=array($key=>$this->mcom_model->query_bywhere($db_table,array(riqi=>$this->mytool->get_ymd())));  
          $this->_comm($in_datas);  
       }else{  
         show_404();  
       }  
    }
private function _comm($in_datas){  
        $in_datas['feed_name'] = 休闲豆 rss;   
        $in_datas['feed_url'] = base_url().free;   
        $in_datas['page_description'] = '休闲豆,it资讯,it电子书,游戏种子,电影bt rss';   
        $in_datas['creator_email'] = '1963612630@qq.com';  
        $in_datas['page_language']=zh-zn;  
        $out_datas[xml]=$this->rss->write_rss($in_datas);  
        header(content-type: text/xml);  
        $this->load->view(rss,$out_datas);  
    }  
}
mcom_model->query_bywhere(mymsg::bt_itinfo,array(riqi=>$this->mytool->get_ymd()));
        $game=$this->mcom_model->query_bywhere(mymsg::bt_game,array(riqi=>$this->mytool->get_ymd()));
        $blog=$this->mcom_model->query_bywhere(mymsg::bt_blog,array(riqi=>$this->mytool->get_ymd()));
        $movie=$this->mcom_model->query_bywhere(mymsg::bt_movie,array(riqi=>$this->mytool->get_ymd()));
        $book=$this->mcom_model->query_bywhere(mymsg::bt_book,array(riqi=>$this->mytool->get_ymd()));
        $in_datas[xml_datas]=array(it=>$it,game=>$game,blog=>$blog,movie=>$movie,book=>$book);
        $this->_comm($in_datas);
    }
    public function rss(){
       $this->load->helper('xml');
       $this->load->helper('text');
       $key= $this->uri->segment(3);
       $db_table= $key==it?bt_itinfo:bt_$key;
       $table_exist=$this->mcom_model->table_exists($db_table);
       if($table_exist){
          $in_datas[xml_datas]=array($key=>$this->mcom_model->query_bywhere($db_table,array(riqi=>$this->mytool->get_ymd())));
          $this->_comm($in_datas);
       }else{
         show_404();
       }
    }
private function _comm($in_datas){
        $in_datas['feed_name'] = 休闲豆 rss; 
        $in_datas['feed_url'] = base_url().free; 
        $in_datas['page_description'] = '休闲豆,it资讯,it电子书,游戏种子,电影bt rss'; 
        $in_datas['creator_email'] = '1963612630@qq.com';
        $in_datas['page_language']=zh-zn;
        $out_datas[xml]=$this->rss->write_rss($in_datas);
        header(content-type: text/xml);
        $this->load->view(rss,$out_datas);
    }
}
运行
[html]
生成结果如下
[php]
休闲豆 rss
http://www.xiuxiandou.com/free   
休闲豆,it资讯,it电子书,游戏种子,电影bt rss  
zh-cn  
1  
hourly  
copyright (c) xiuxiandou.com. all rights reserved.  
http://www.xiuxiandou.com
http://www.xiuxiandou.com/content-it-13533-硅谷传奇投资人讲述初创企业家易犯的4大错误
http://www.xiuxiandou.com/content-it-13533-硅谷传奇投资人讲述初创企业家易犯的4大错误
qualys 创始人兼 ceo 菲利普`科尔图特
北京时间 2 月 25 日消息,据国外媒体报道,美国云计算安全公司…
]]>
2013-02-25 09:18:49  
http://news.cnblogs.com/n/172129/
....
休闲豆 rss
http://www.xiuxiandou.com/free
休闲豆,it资讯,it电子书,游戏种子,电影bt rss
zh-cn
1
hourly
copyright (c) xiuxiandou.com. all rights reserved.
http://www.xiuxiandou.com
http://www.xiuxiandou.com/content-it-13533-硅谷传奇投资人讲述初创企业家易犯的4大错误
http://www.xiuxiandou.com/content-it-13533-硅谷传奇投资人讲述初创企业家易犯的4大错误
qualys 创始人兼 ceo 菲利普`科尔图特
北京时间 2 月 25 日消息,据国外媒体报道,美国云计算安全公司…
]]>
2013-02-25 09:18:49
http://news.cnblogs.com/n/172129/
....
3、网站地图
网站地图主要根据sitemaps.xml协议拼写的xml,协议地址:http://www.sitemaps.org/protocol.html
1、加载libraries目录下的sitemaps.php类,内容如下
[php]  
config->load('sitemaps');  
    }
/** 
     * adds a new item to the urlset 
     * 
     * @param array $new_item 
     * @access public 
     */  
    function add_item($new_item)  
    {  
        $this->items[] = $new_item;  
    }
/** 
     * adds an array of items to the urlset 
     * 
     * @param array $new_items array of items 
     * @access public 
     */  
    function add_item_array($new_items)  
    {  
        $this->items = array_merge($this->items, $new_items);  
    }
/** 
     * generates the sitemap xml data 
     * 
     * @param string $file_name (optional) if file name is supplied the xml data is saved in it otherwise returned as a string 
     * @param bool $gzip (optional) compress sitemap, overwrites config item 'sitemaps_gzip' 
     * @access public 
     * @return string 
     */  
    function build($file_name = null, $gzip = null)  
    {  
        $ci =& get_instance();  
        $map = $ci->config->item('sitemaps_header') . \n;
foreach($this->items as $item)  
        {  
            $item['loc'] = htmlentities($item['loc'], ent_quotes);  
            $map .= \t\n\t\t . $item['loc'] . \n;
$attributes = array(lastmod, changefreq, priority);
foreach($attributes as $attr)  
            {  
                if(isset($item[$attr]))  
                {  
                    $map .= \t\t . $item[$attr] . $attr>\n;  
                }  
            }
$map .= \t\n\n;  
        }
unset($this->items);
$map .= $ci->config->item('sitemaps_footer');
if( ! is_null($file_name))  
        {  
            $fh = fopen($file_name, 'a');//w   
            fwrite($fh, $map);  
            fclose($fh);
if($ci->config->item('sitemaps_filesize_error') && filesize($file_name) > 1024 * 1024 * 30)  
            {  
                show_error('your sitemap is bigger than 10mb, most search engines will not accept it.');  
            }
if($gzip or (is_null($gzip) && $ci->config->item('sitemaps_gzip')))  
            {  
                $gzdata = gzencode($map, 9);  
                $file_gzip = str_replace({file_name}, $file_name, $ci->config->item('sitemaps_gzip_path'));  
                $fp = fopen($file_gzip, a);//w   
                fwrite($fp, $gzdata);  
                fclose($fp);
// delete the uncompressed sitemap   
                unlink($file_name);
return $file_gzip;  
            }
return $file_name;  
        }  
        else  
        {  
            return $map;  
        }  
    }
/** 
     * generate a sitemap index file pointing to other sitemaps you previously built 
     * 
     * @param array $urls array of urls, each being an array with at least a loc index 
     * @param string $file_name (optional) if file name is supplied the xml data is saved in it otherwise returned as a string 
     * @param bool $gzip (optional) compress sitemap, overwrites config item 'sitemaps_gzip' 
     * @access public 
     * @return string 
     */  
    function build_index($urls, $file_name = null, $gzip = null)  
    {  
        $ci =& get_instance();  
        $index = $ci->config->item('sitemaps_index_header') . \n;
foreach($urls as $url)  
        {  
            $url['loc'] = htmlentities($url['loc'], ent_quotes);  
            $index .= \t\n\t\t . $url['loc'] . \n;
if(isset($url['lastmod']))  
            {  
                $index .= \t\t . $url['lastmod'] . \n;  
            }
$index .= \t\n\n;  
        }
$index .= $ci->config->item('sitemaps_index_footer');
if( ! is_null($file_name))  
        {  
            $fh = fopen($file_name, 'w');  
            fwrite($fh, $index);  
            fclose($fh);
if($ci->config->item('sitemaps_filesize_error') && filesize($file_name) > 1024 * 1024 * 10)  
            {  
                show_error('your sitemap index is bigger than 10mb, most search engines will not accept it.');  
            }
if($gzip or (is_null($gzip) && $ci->config->item('sitemaps_index_gzip')))  
            {  
                $gzdata = gzencode($index, 9);  
                $file_gzip = str_replace({file_name}, $file_name, $ci->config->item('sitemaps_index_gzip_path'));  
                $fp = fopen($file_gzip, w);  
                fwrite($fp, $gzdata);  
                fclose($fp);
// delete the uncompressed sitemap index   
                unlink($file_name);
return $file_gzip;  
            }
return $file_name;  
        }  
        else  
        {  
            return $index;  
        }  
    }
/** 
     * notify search engines of your updates sitemap 
     * 
     * @param string $url_xml absolute url of your sitemap, use codeigniter's site_url() 
     * @param array $search_engines array of search engines to ping, see config file for notes 
     * @access public 
     * @return array http reponse codes 
     */  
    function ping($url_xml, $search_engines = null)  
    {  
        $ci =& get_instance();
if(is_null($search_engines))  
        {  
            $search_engines = $ci->config->item('sitemaps_search_engines');  
        }
$statuses = array();
foreach($search_engines as $engine)  
        {  
            $status = 0;  
            if($fp = @fsockopen($engine['host'], 80))  
            {  
                $engine['url'] = emptyempty($engine['url']) ? /ping?sitemap= : $engine['url'];
$req =  'get ' . $engine['url'] .  
                        urlencode($url_xml) . http/1.1\r\n .  
                        host: . $engine['host'] . \r\n .  
                        $ci->config->item('sitemaps_user_agent') .  
                        connection: close\r\n\r\n;  
                fwrite($fp, $req);  
                while( ! feof($fp))  
                {  
                    if(@preg_match('~^http/\d\.\d (\d+)~i', fgets($fp, 128), $m))  
                    {  
                        $status = intval($m[1]);  
                        break;  
                    }  
                }  
                fclose($fp);  
            }
$statuses[] = array(host => $engine['host'], status => $status, request => $req);  
        }
if($ci->config->item('sitemaps_log_http_responses') or $ci->config->item('sitemaps_debug'))  
        {  
            foreach($statuses as $reponse)  
            {  
                $message = sitemaps: . $reponse['host'] . responded with http status . $reponse['status'];
if($ci->config->item('sitemaps_log_http_responses'))  
                {  
                    $level = $reponse['status'] == 200 ? 'debug' : 'error';  
                    log_message($level, $message);  
                }
if($ci->config->item('sitemaps_debug'))  
                {  
                    echo . $message . after request:
\n . $reponse['request'] .  
\n\n;  
                }  
            }  
        }
return $statuses;  
    }  
}
config->load('sitemaps');
    }
/**
     * adds a new item to the urlset
     *
     * @param array $new_item
     * @access public
     */
    function add_item($new_item)
    {
        $this->items[] = $new_item;
    }
/**
     * adds an array of items to the urlset
     *
     * @param array $new_items array of items
     * @access public
     */
    function add_item_array($new_items)
    {
        $this->items = array_merge($this->items, $new_items);
    }
/**
     * generates the sitemap xml data
     *
     * @param string $file_name (optional) if file name is supplied the xml data is saved in it otherwise returned as a string
     * @param bool $gzip (optional) compress sitemap, overwrites config item 'sitemaps_gzip'
     * @access public
     * @return string
     */
    function build($file_name = null, $gzip = null)
    {
        $ci =& get_instance();
        $map = $ci->config->item('sitemaps_header') . \n;
foreach($this->items as $item)
        {
            $item['loc'] = htmlentities($item['loc'], ent_quotes);
            $map .= \t\n\t\t . $item['loc'] . \n;
$attributes = array(lastmod, changefreq, priority);
foreach($attributes as $attr)
            {
                if(isset($item[$attr]))
                {
                    $map .= \t\t . $item[$attr] . $attr>\n;
                }
            }
$map .= \t\n\n;
        }
unset($this->items);
$map .= $ci->config->item('sitemaps_footer');
if( ! is_null($file_name))
        {
            $fh = fopen($file_name, 'a');//w
            fwrite($fh, $map);
            fclose($fh);
if($ci->config->item('sitemaps_filesize_error') && filesize($file_name) > 1024 * 1024 * 30)
            {
                show_error('your sitemap is bigger than 10mb, most search engines will not accept it.');
            }
if($gzip or (is_null($gzip) && $ci->config->item('sitemaps_gzip')))
            {
                $gzdata = gzencode($map, 9);
                $file_gzip = str_replace({file_name}, $file_name, $ci->config->item('sitemaps_gzip_path'));
                $fp = fopen($file_gzip, a);//w
                fwrite($fp, $gzdata);
                fclose($fp);
// delete the uncompressed sitemap
                unlink($file_name);
return $file_gzip;
            }
return $file_name;
        }
        else
        {
            return $map;
        }
    }
/**
     * generate a sitemap index file pointing to other sitemaps you previously built
     *
     * @param array $urls array of urls, each being an array with at least a loc index
     * @param string $file_name (optional) if file name is supplied the xml data is saved in it otherwise returned as a string
     * @param bool $gzip (optional) compress sitemap, overwrites config item 'sitemaps_gzip'
     * @access public
     * @return string
     */
    function build_index($urls, $file_name = null, $gzip = null)
    {
        $ci =& get_instance();
        $index = $ci->config->item('sitemaps_index_header') . \n;
foreach($urls as $url)
        {
            $url['loc'] = htmlentities($url['loc'], ent_quotes);
            $index .= \t\n\t\t . $url['loc'] . \n;
if(isset($url['lastmod']))
            {
                $index .= \t\t . $url['lastmod'] . \n;
            }
$index .= \t\n\n;
        }
$index .= $ci->config->item('sitemaps_index_footer');
if( ! is_null($file_name))
        {
            $fh = fopen($file_name, 'w');
            fwrite($fh, $index);
            fclose($fh);
if($ci->config->item('sitemaps_filesize_error') && filesize($file_name) > 1024 * 1024 * 10)
            {
                show_error('your sitemap index is bigger than 10mb, most search engines will not accept it.');
            }
if($gzip or (is_null($gzip) && $ci->config->item('sitemaps_index_gzip')))
            {
                $gzdata = gzencode($index, 9);
                $file_gzip = str_replace({file_name}, $file_name, $ci->config->item('sitemaps_index_gzip_path'));
                $fp = fopen($file_gzip, w);
                fwrite($fp, $gzdata);
                fclose($fp);
// delete the uncompressed sitemap index
                unlink($file_name);
return $file_gzip;
            }
return $file_name;
        }
        else
        {
            return $index;
        }
    }
/**
     * notify search engines of your updates sitemap
     *
     * @param string $url_xml absolute url of your sitemap, use codeigniter's site_url()
     * @param array $search_engines array of search engines to ping, see config file for notes
     * @access public
     * @return array http reponse codes
     */
    function ping($url_xml, $search_engines = null)
    {
        $ci =& get_instance();
if(is_null($search_engines))
        {
            $search_engines = $ci->config->item('sitemaps_search_engines');
        }
$statuses = array();
foreach($search_engines as $engine)
        {
            $status = 0;
            if($fp = @fsockopen($engine['host'], 80))
            {
                $engine['url'] = empty($engine['url']) ? /ping?sitemap= : $engine['url'];
$req =  'get ' . $engine['url'] .
                        urlencode($url_xml) . http/1.1\r\n .
                        host: . $engine['host'] . \r\n .
                        $ci->config->item('sitemaps_user_agent') .
                        connection: close\r\n\r\n;
                fwrite($fp, $req);
                while( ! feof($fp))
                {
                    if(@preg_match
其它类似信息

推荐信息