CodeIgniter生成网站sitemap地图的方法
2015-01-24信息快讯网
用CodeIgniter只需要三步就可以生成网站sitemap地图,方法很简单,大家可以参考一下
1.建立了一个名为sitemap的控制器
<?php if (!defined('BASEPATH')) exit ('No direct script access allowed'); class Sitemap extends CI_Controller{ public function __construct() { parent::__construct(); $this->load->model('sitemapxml'); } function index(){ $data['posts']=$this->sitemapxml->getArticle(); $data['categorys']=$this->sitemapxml->getCategory(); $this->load->view('sitemap.php',$data); } }
首先加载sitemapxml模型类,index方法调用两个方法,分别获取文章列表和类别列表,以在模板中输出。
2.创建一个名为sitemapxml的模型
<?php class Sitemapxml extends CI_Model{ public function __construct() { parent :: __construct(); $this->load->database(); } public function getArticle(){ $this->db->select('ID,post_date,post_name'); $this->db->order_by('post_date', 'desc'); $result=$this->db->get('posts'); return $result->result_array(); } public function getCategory(){ $this->db->select('c_sname'); $result=$this->db->get('category'); return $result->result_array(); } }
模型里面定义两个方法,获取文章列表和类别列表。
3.创建一个名为sitemap.php的模板
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>sitemap</title> </head> <body> <?php echo htmlspecialchars('<?xml version="1.0" encoding="utf-8"?>').'<br/>'; echo htmlspecialchars('<urlset>').'<br/>'; //首页单独写一个url echo htmlspecialchars('<url>').'<br/>'; echo htmlspecialchars(' <loc>').'http://aa.sinaapp.com'.htmlspecialchars('</loc>').'<br/>'; echo htmlspecialchars('<lastmod>').date('Y-m-d',time()).htmlspecialchars('</lastmod>').'<br/>'; echo htmlspecialchars('<changefreq>').'daily'.htmlspecialchars('</changefreq>').'<br/>'; echo htmlspecialchars('<priority>').'1'.htmlspecialchars('</priority>').'<br/>'; echo htmlspecialchars('</url>').'<br/>'; //类别页 foreach ($categorys as $category){ echo htmlspecialchars('<url>').'<br/>'; echo htmlspecialchars(' <loc>').'http://aa.sinaapp.com/index.php/home/cat/'.$category['c_sname'].htmlspecialchars('</loc>').'<br/>'; echo htmlspecialchars('<lastmod>').date('Y-m-d',time()).htmlspecialchars('</lastmod>').'<br/>'; echo htmlspecialchars('<changefreq>').'weekly'.htmlspecialchars('</changefreq>').'<br/>'; echo htmlspecialchars('<priority>').'0.8'.htmlspecialchars('</priority>').'<br/>'; echo htmlspecialchars('</url>').'<br/>'; } //文章页 foreach ($posts as $post){ echo htmlspecialchars('<url>').'<br/>'; echo htmlspecialchars(' <loc>').'http://aa.sinaapp.com/index.php/home/details/'.$post['post_name'].htmlspecialchars('</loc>').'<br/>'; echo htmlspecialchars('<lastmod>').date('Y-m-d',strtotime($post['post_date'])).htmlspecialchars('</lastmod>').'<br/>'; echo htmlspecialchars('<changefreq>').'weekly'.htmlspecialchars('</changefreq>').'<br/>'; echo htmlspecialchars('<priority>').'0.6'.htmlspecialchars('</priority>').'<br/>'; echo htmlspecialchars('</url>').'<br/>'; } //留言板 echo htmlspecialchars('<url>').'<br/>'; echo htmlspecialchars(' <loc>').'http://aa.sinaapp.com/index.php/guest'.htmlspecialchars('</loc>').'<br/>'; echo htmlspecialchars('<lastmod>').date('Y-m-d',time()).htmlspecialchars('</lastmod>').'<br/>'; echo htmlspecialchars('<changefreq>').'weekly'.htmlspecialchars('</changefreq>').'<br/>'; echo htmlspecialchars('<priority>').'0.5'.htmlspecialchars('</priority>').'<br/>'; echo htmlspecialchars('</url>').'<br/>'; echo htmlspecialchars('</urlset>'); ?> </body> </html>
最重要的就是这个模板了,按照sitemap.xml的标准格式,从数据库中读取相关数据,用循环的方式自动生成这样的格式,页面上展示的是html形式的xml的内容。
然后再用一个很笨的方法,将生成的html文本(实际上就是xml文件的显示内容),复制到一个新建的sitemap.xml文件,格式化一下,保存,就产生了一个标准的sitemap.xml文件。因为要用的SAE部署应用,目录不支持写操作,只能这样上传了,隔一段时间这样弄一下就ok了。
ThinkPHP CURD方法之limit方法详解
CodeIgniter CLI模式简介
CI框架自动加载session出现报错的解决办法
php的SimpleXML方法读写XML接口文件实例解析
Thinkphp中Create方法深入探究
PHPAnalysis中文分词类详解
浅析ThinkPHP中execute和query方法的区别
PHP中使用gettext解决国际化问题的例子(i18n)
Yii结合CKEditor实现图片上传功能
php smarty truncate UTF8乱码问题解决办法
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
CodeIgniter框架过滤HTML危险代码
让CodeIgniter的ellipsize()支持中文截断的方法
PHP使用Alexa API获取网站的Alexa排名例子
PHP APC配置文件2套和参数详解
PHP独立Session数据库存储操作类分享
百度地图API应用之获取用户的具体位置
PHP、Nginx、Apache中禁止网页被iframe引用的方法
利用谷歌 Translate API制作自己的翻译脚本
php curl模拟post请求小实例
php模板原理讲解
PHP生成sitemap.xml地图函数
php堆排序(heapsort)练习
php5.3 不支持 session_register() 此函数已启用的解决方法
session在php5.3中的变化 session_is_registered() is deprecated in
php file_get_contents抓取Gzip网页乱码的三种解决方法
CodeIgniter使用phpcms模板引擎
CodeIgniter基本配置详细介绍
php session劫持和防范的方法
PHP使用SOAP调用.net的WebService数据
php获取新浪微博数据API实例
php Session存储到Redis的方法
腾讯QQ微博API接口获取微博内容
从PHP $_SERVER相关参数判断是否支持Rewrite模块
PHP Switch 语句之学习笔记