当前位置:首页 > PHP教程 > php应用 > 列表

CodeIgniter生成网站sitemap地图的方法

发布:smiling 来源: PHP粉丝网  添加日期:2020-07-02 11:27:21 浏览: 评论:0 

用CodeIgniter只需要三步就可以生成网站sitemap地图,方法很简单,大家可以参考一下:

1.建立了一个名为sitemap的控制器,代码如下:

  1. if (!defined('BASEPATH')) 
  2.  exit ('No direct script access allowed'); 
  3.  
  4. class Sitemap extends CI_Controller{ 
  5.  public function __construct() { 
  6.   parent::__construct(); 
  7.   $this->load->model('sitemapxml');  
  8.  } 
  9.  
  10.  function index(){ 
  11.   $data['posts']=$this->sitemapxml->getArticle(); 
  12.   $data['categorys']=$this->sitemapxml->getCategory(); 
  13.   $this->load->view('sitemap.php',$data); 
  14.  } 

首先加载sitemapxml模型类,index方法调用两个方法,分别获取文章列表和类别列表,以在模板中输出。

2.创建一个名为sitemapxml的模型,代码如下:

  1. class Sitemapxml extends CI_Model{ 
  2.  public function __construct() { 
  3.   parent :: __construct(); 
  4.   $this->load->database(); 
  5.  } 
  6.  
  7.  public function getArticle(){ 
  8.   $this->db->select('ID,post_date,post_name'); 
  9.   $this->db->order_by('post_date''desc'); 
  10.   $result=$this->db->get('posts'); 
  11.   return $result->result_array(); 
  12.  } //phpfensi.com 
  13.  
  14.  public function getCategory(){ 
  15.   $this->db->select('c_sname'); 
  16.   $result=$this->db->get('category'); 
  17.   return $result->result_array(); 
  18.  } 

模型里面定义两个方法,获取文章列表和类别列表。

3.创建一个名为sitemap.php的模板,代码如下:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  5. <title>sitemap</title> 
  6. </head> 
  7. <body> 
  8. <?php 
  9. echo htmlspecialchars('<?xml version="1.0" encoding="utf-8"?>').'<br/>'
  10. echo htmlspecialchars('<urlset>').'<br/>'
  11.  
  12. //首页单独写一个url 
  13. echo htmlspecialchars('<url>').'<br/>'
  14. echo htmlspecialchars(' <loc>').'http://aa.sinaapp.com'.htmlspecialchars('</loc>').'<br/>'
  15. echo htmlspecialchars('<lastmod>').date('Y-m-d',time()).htmlspecialchars('</lastmod>').'<br/>'
  16. echo htmlspecialchars('<changefreq>').'daily'.htmlspecialchars('</changefreq>').'<br/>'
  17. echo htmlspecialchars('<priority>').'1'.htmlspecialchars('</priority>').'<br/>'
  18. echo htmlspecialchars('</url>').'<br/>'
  19.  
  20. //类别页 
  21. foreach ($categorys as $category){ 
  22.  echo htmlspecialchars('<url>').'<br/>'
  23.  echo htmlspecialchars(' <loc>').'http://aa.sinaapp.com/index.php/home/cat/'.$category['c_sname'].htmlspecialchars('</loc>').'<br/>'
  24.  echo htmlspecialchars('<lastmod>').date('Y-m-d',time()).htmlspecialchars('</lastmod>').'<br/>'
  25.  echo htmlspecialchars('<changefreq>').'weekly'.htmlspecialchars('</changefreq>').'<br/>'
  26.  echo htmlspecialchars('<priority>').'0.8'.htmlspecialchars('</priority>').'<br/>'
  27.  echo htmlspecialchars('</url>').'<br/>'
  28.  
  29. //文章页 
  30. foreach ($posts as $post){ 
  31.  echo htmlspecialchars('<url>').'<br/>'
  32.  echo htmlspecialchars(' <loc>').'http://aa.sinaapp.com/index.php/home/details/'.$post['post_name'].htmlspecialchars('</loc>').'<br/>'
  33.  echo htmlspecialchars('<lastmod>').date('Y-m-d',strtotime($post['post_date'])).htmlspecialchars('</lastmod>').'<br/>'
  34.  echo htmlspecialchars('<changefreq>').'weekly'.htmlspecialchars('</changefreq>').'<br/>'
  35.  echo htmlspecialchars('<priority>').'0.6'.htmlspecialchars('</priority>').'<br/>'
  36.  echo htmlspecialchars('</url>').'<br/>'
  37.  
  38. //留言板 
  39. echo htmlspecialchars('<url>').'<br/>'
  40. echo htmlspecialchars(' <loc>').'http://aa.sinaapp.com/index.php/guest'.htmlspecialchars('</loc>').'<br/>'
  41. echo htmlspecialchars('<lastmod>').date('Y-m-d',time()).htmlspecialchars('</lastmod>').'<br/>'
  42. echo htmlspecialchars('<changefreq>').'weekly'.htmlspecialchars('</changefreq>').'<br/>'
  43. echo htmlspecialchars('<priority>').'0.5'.htmlspecialchars('</priority>').'<br/>'
  44. echo htmlspecialchars('</url>').'<br/>'
  45.  
  46. echo htmlspecialchars('</urlset>'); 
  47. ?> 
  48. </body> 
  49. </html> 

最重要的就是这个模板了,按照sitemap.xml的标准格式,从数据库中读取相关数据,用循环的方式自动生成这样的格式,页面上展示的是html形式的xml的内容。

然后再用一个很笨的方法,将生成的html文本(实际上就是xml文件的显示内容),复制到一个新建的sitemap.xml文件,格式化一下,保存,就产生了一个标准的sitemap.xml文件。因为要用的SAE部署应用,目录不支持写操作,只能这样上传了,隔一段时间这样弄一下就ok了。

Tags: CodeIgniter sitemap

分享到: