程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Codeigniter Rss,網站地圖,路由配置

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]   <?php if(!defined('BASEPATH')) exit('No direct script access allowed');   /**   * Rss   */   class Rss{                              public function write_rss($in_datas){               $CI=& get_instance();               $CI->load->helper('xml');               $CI->load->helper('text');                                  $xml_str="<?xml version='1.0' encoding='UTF-8'?>"                       ."<rss version='2.0' xmlns:content='http://purl.org/rss/1.0/modules/content/'  xmlns:wfw='http://wellformedweb.org/CommentAPI/' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:atom='http://www.w3.org/2005/Atom' xmlns:sy='http://purl.org/rss/1.0/modules/syndication/'    xmlns:slash='http://purl.org/rss/1.0/modules/slash/'    >";               if(!emptyempty($in_datas)){                       $xml_str.="<channel>"                                   ."<title>".$in_datas["feed_name"]."</title>"                                   ."<atom:link href='".$in_datas["feed_url"]."' rel='self' type='application/rss+xml' />"                                   ."<link>".$in_datas["feed_url"]."</link>"                                   ."<description>".$in_datas["page_description"]."</description>"                                   ."<language>zh-cn</language> "                                   ."<sy:updateFrequency>1</sy:updateFrequency>"                                   ."<sy:updatePeriod>hourly</sy:updatePeriod> "                                   ."<dc:rights>Copyright (C) Xiuxiandou.com. All rights reserved.</dc:rights>"                                   ."<generator>http://www.xiuxiandou.com</generator>";                                   if(!emptyempty($in_datas["xml_datas"])){                                       foreach($in_datas["xml_datas"] as $k => $v){                                           foreach($v as $xml){                                               $xml_str.=" <item>"                                                       ."<title><![CDATA[ ".xml_convert($xml->subject)."]]> </title>"                                                       ."<link>".site_url("content-$k-$xml->id-".xml_convert($CI->mytool->get_title($xml->subject)))."</link>"                                                       ."<guid>".site_url("content-$k-$xml->id-".xml_convert($CI->mytool->get_title($xml->subject)))."</guid>"                                                       ."<description><![CDATA[".character_limiter(xml_convert($xml->message, 600))."]]></description>"                                                       ."<pubdate>".date('Y-m-d h:i:s',$xml->dateline)."</pubdate>  "                                                       ."<author>$xml->url</author>"                                                       ."</item>";                                           }                                       }                                   }                       $xml_str.="</channel>";                                                 }               $xml_str.="</rss>";              return $xml_str;       }   }     <?php if(!defined('BASEPATH')) exit('No direct script access allowed'); /**  * Rss  */ class Rss{                          public function write_rss($in_datas){             $CI=& get_instance();             $CI->load->helper('xml');             $CI->load->helper('text');                              $xml_str="<?xml version='1.0' encoding='UTF-8'?>"                     ."<rss version='2.0' xmlns:content='http://purl.org/rss/1.0/modules/content/'  xmlns:wfw='http://wellformedweb.org/CommentAPI/' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:atom='http://www.w3.org/2005/Atom' xmlns:sy='http://purl.org/rss/1.0/modules/syndication/'    xmlns:slash='http://purl.org/rss/1.0/modules/slash/'    >";             if(!empty($in_datas)){                     $xml_str.="<channel>"                                 ."<title>".$in_datas["feed_name"]."</title>"                                 ."<atom:link href='".$in_datas["feed_url"]."' rel='self' type='application/rss+xml' />"                                 ."<link>".$in_datas["feed_url"]."</link>"                                 ."<description>".$in_datas["page_description"]."</description>"                                 ."<language>zh-cn</language> "                                 ."<sy:updateFrequency>1</sy:updateFrequency>"                                 ."<sy:updatePeriod>hourly</sy:updatePeriod> "                                 ."<dc:rights>Copyright (C) Xiuxiandou.com. All rights reserved.</dc:rights>"                                 ."<generator>http://www.xiuxiandou.com</generator>";                                 if(!empty($in_datas["xml_datas"])){                                     foreach($in_datas["xml_datas"] as $k => $v){                                         foreach($v as $xml){                                             $xml_str.=" <item>"                                                     ."<title><![CDATA[ ".xml_convert($xml->subject)."]]> </title>"                                                     ."<link>".site_url("content-$k-$xml->id-".xml_convert($CI->mytool->get_title($xml->subject)))."</link>"                                                     ."<guid>".site_url("content-$k-$xml->id-".xml_convert($CI->mytool->get_title($xml->subject)))."</guid>"                                                     ."<description><![CDATA[".character_limiter(xml_convert($xml->message, 600))."]]></description>"                                                     ."<pubdate>".date('Y-m-d h:i:s',$xml->dateline)."</pubdate>  "                                                     ."<author>$xml->url</author>"                                                     ."</item>";                                         }                                     }                                 }                     $xml_str.="</channel>";                                             }             $xml_str.="</rss>";            return $xml_str;     } }   2、RSS控制類       [php]   <?php   if(!defined('BASEPATH')) exit('No direct script access allowed');   /**   * 2013-2-25:RSS訂閱   */   class Feed  extends CI_Controller{       public function index(){           $it=$this->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'] = '[email protected]';           $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);       }   }     <?php if(!defined('BASEPATH')) exit('No direct script access allowed'); /**  * 2013-2-25:RSS訂閱  */ class Feed  extends CI_Controller{     public function index(){         $it=$this->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'] = '[email protected]';         $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 xmlns:c xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" versi   <channel>   <title>休閒豆 RSS</title>   <atom:link href="http://www.xiuxiandou.com/free" rel="self" type="application/rss+xml"/>   <link>http://www.xiuxiandou.com/free</link>    <description>休閒豆,IT資訊,IT電子書,游戲種子,電影BT RSS</description>   <language>zh-cn</language>   <sy:updateFrequency>1</sy:updateFrequency>   <sy:updatePeriod>hourly</sy:updatePeriod>   <dc:rights>Copyright (C) Xiuxiandou.com. All rights reserved.</dc:rights>   <generator>http://www.xiuxiandou.com</generator>    <item>   <title>   <![CDATA[ 硅谷傳奇投資人講述初創企業家易犯的4大錯誤 ]]>   </title>   <link>   http://www.xiuxiandou.com/content-it-13533-硅谷傳奇投資人講述初創企業家易犯的4大錯誤    </link>   <guid>   http://www.xiuxiandou.com/content-it-13533-硅谷傳奇投資人講述初創企業家易犯的4大錯誤    </guid>   <description>   <![CDATA[   <br/><p style="text-align: center;"> <br/><img src=http://www.BkJia.com/uploadfile/2013/0301/20130301022546372.com/&' title='xiuxiandou.com' alt='xiuxiandou.com' target='_blank'/> <br/> </p><br/> <br/><p align="center">Qualys 創始人兼 CEO 菲利普`科爾圖特</p><br/> <br/><p>  北京時間 2 月 25 日消息,據國外媒體報道,美國雲計算安全公司…   ]]>   </description>   <pubdate>2013-02-25 09:18:49</pubdate>   <author>http://news.cnblogs.com/n/172129/</author>    </item>   ....     <rss xmlns:c xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" versi <channel> <title>休閒豆 RSS</title> <atom:link href="http://www.xiuxiandou.com/free" rel="self" type="application/rss+xml"/> <link>http://www.xiuxiandou.com/free</link> <description>休閒豆,IT資訊,IT電子書,游戲種子,電影BT RSS</description> <language>zh-cn</language> <sy:updateFrequency>1</sy:updateFrequency> <sy:updatePeriod>hourly</sy:updatePeriod> <dc:rights>Copyright (C) Xiuxiandou.com. All rights reserved.</dc:rights> <generator>http://www.xiuxiandou.com</generator> <item> <title> <![CDATA[ 硅谷傳奇投資人講述初創企業家易犯的4大錯誤 ]]> </title> <link> http://www.xiuxiandou.com/content-it-13533-硅谷傳奇投資人講述初創企業家易犯的4大錯誤 </link> <guid> http://www.xiuxiandou.com/content-it-13533-硅谷傳奇投資人講述初創企業家易犯的4大錯誤 </guid> <description> <![CDATA[ <br/><p style="text-align: center;"> <br/><img src=http://www.BkJia.com/uploadfile/2013/0301/20130301022546372.com/&' title='xiuxiandou.com' alt='xiuxiandou.com' target='_blank'/> <br/> </p><br/> <br/><p align="center">Qualys 創始人兼 CEO 菲利普`科爾圖特</p><br/> <br/><p>  北京時間 2 月 25 日消息,據國外媒體報道,美國雲計算安全公司… ]]> </description> <pubdate>2013-02-25 09:18:49</pubdate> <author>http://news.cnblogs.com/n/172129/</author> </item> ....          3、網站地圖               網站地圖主要根據sitemaps.xml協議拼寫的XML,協議地址:http://www.sitemaps.org/protocol.html         1、加載libraries目錄下的sitemaps.php類,內容如下     [php]   <?php if (!defined('BASEPATH')) exit('No direct script access allowed');                /**   * A class for generating XML sitemaps   *   * @author Philipp Dörner <[email protected]>   * @version 0.7   * @access public   * @package sitemaps   */   class Sitemaps   {       var $items = array();                    function Sitemaps()       {           $CI =& get_instance();                                $CI->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<url>\n\t\t<loc>" . $item['loc'] . "</loc>\n";                            $attributes = array("lastmod", "changefreq", "priority");                            foreach($attributes AS $attr)               {                   if(isset($item[$attr]))                   {                       $map .= "\t\t<$attr>" . $item[$attr] . "</$attr>\n";                   }               }                            $map .= "\t</url>\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<sitemap>\n\t\t<loc>" . $url['loc'] . "</loc>\n";                            if(isset($url['lastmod']))               {                   $index .= "\t\t<lastmod>" . $url['lastmod'] . "</lastmod>\n";               }                            $index .= "\t</sitemap>\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 "<p>" . $message . " after request:</p>\n<pre>" . $reponse['request'] .  "</pre>\n\n";                   }               }           }                        return $statuses;       }   }     <?php if (!defined('BASEPATH')) exit('No direct script access allowed');            /**  * A class for generating XML sitemaps  *  * @author Philipp Dörner <[email protected]>  * @version 0.7  * @access public  * @package sitemaps  */ class Sitemaps {     var $items = array();                function Sitemaps()     {         $CI =& get_instance();                            $CI->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<url>\n\t\t<loc>" . $item['loc'] . "</loc>\n";                        $attributes = array("lastmod", "changefreq", "priority");                        foreach($attributes AS $attr)             {                 if(isset($item[$attr]))                 {                     $map .= "\t\t<$attr>" . $item[$attr] . "</$attr>\n";                 }             }                        $map .= "\t</url>\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<sitemap>\n\t\t<loc>" . $url['loc'] . "</loc>\n";                        if(isset($url['lastmod']))             {                 $index .= "\t\t<lastmod>" . $url['lastmod'] . "</lastmod>\n";             }                        $index .= "\t</sitemap>\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('~^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 "<p>" . $message . " after request:</p>\n<pre>" . $reponse['request'] .  "</pre>\n\n";                 }             }         }                    return $statuses;     } }             2、sitemap.php控制類,注意這裡不要與libraries中的sitemaps.php同名,不然會報錯的.     <?php   if(!defined('BASEPATH')) exit('No direct script access allowed');   /**   * 2013-2-25:網站地圖   */   class Sitemap  extends CI_Controller{                       public function index(){           $file_name =$this->write_xml();           redirect(site_url($file_name));       }       public function write_xml(){           $it=$this->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);           $file_name="sitemap.xml";           if(!emptyempty($in_datas["xml_datas"])){               foreach($in_datas["xml_datas"] as $k => $v){                   foreach($v as $xml){                       $item = array(                           "loc" => site_url("content-$k-$xml->id"),                           "lastmod" => date('Y-m-d',$xml->dateline),                           "changefreq" => "hourly",                           "priority" => "0.8"                       );                       $this->sitemaps->add_item($item);                   }                                           }               $file_name = $this->sitemaps->build("sitemap.xml");           }           return $file_name;             }   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved