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程序中的常见漏洞进行攻击
Oct 09 PHP
图书管理程序(一)
Oct 09 PHP
PHP完整的日历类(CLASS)
Nov 27 PHP
按上下级层次关系输出内容的PHP代码
Jul 17 PHP
Codeigniter(CI)框架分页函数及相关知识
Nov 03 PHP
PHP中使用匿名函数操作数据库的例子
Nov 17 PHP
PHP实现股票趋势图和柱形图
Feb 07 PHP
PHP保存session到memcache服务器的方法
Jan 19 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
Sep 22 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
laravel5表单唯一验证的实例代码
Sep 30 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
PHP 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
mysql 字段类型说明
2007/04/27 PHP
php入门小知识
2008/03/24 PHP
解析php中获取系统信息的方法
2013/06/25 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
javascript深入理解js闭包
2010/07/03 Javascript
JS画线(实例代码)
2013/11/20 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
将angular-ui的分页组件封装成指令的方法详解
2017/05/10 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
python实现比较两段文本不同之处的方法
2015/05/30 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
python修改txt文件中的某一项方法
2018/12/29 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
机械电子工程专业推荐信范文
2013/11/20 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
培训研修方案
2014/06/06 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
社区节水倡议书
2015/04/29 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS