CodeIgniter生成网站sitemap地图的方法


Posted in PHP onNovember 13, 2013

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了。

PHP 相关文章推荐
PHP获取表单textarea数据中的换行问题
Sep 10 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
php中大括号作用介绍
Mar 22 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
PHP实现变色验证码实例
Jan 06 PHP
php中http与https跨域共享session的解决方法
Dec 20 PHP
php根据生日计算年龄的方法
Jul 13 PHP
PHP中的use关键字及文件的加载详解
Nov 28 PHP
浅谈PHP无限极分类原理
Mar 14 PHP
PHP中非常有用却鲜有人知的函数集锦
Aug 17 PHP
php模板原理讲解
Nov 13 #PHP
php构造函数实例讲解
Nov 13 #PHP
PHP将XML转数组过程详解
Nov 13 #PHP
PHP生成sitemap.xml地图函数
Nov 13 #PHP
使用PHP静态变量当缓存的方法
Nov 13 #PHP
使用phpQuery采集网页的方法
Nov 13 #PHP
phpQuery占用内存过多的处理方法
Nov 13 #PHP
You might like
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
php内嵌函数用法实例
2015/03/20 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
PHP使用XMLWriter读写xml文件操作详解
2018/07/31 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
javascript 跳转代码集合
2009/12/03 Javascript
js中设置元素class的三种方法小结
2011/08/28 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
原生JavaScript制作微博发布面板效果
2016/03/11 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
Python守护进程用法实例分析
2015/06/04 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
git进行版本控制心得详谈
2017/12/10 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle