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一句话cmdshell新型 (非一句话木马)
Apr 18 PHP
PHP 类商品秒杀计时实现代码
May 05 PHP
php入门学习知识点三 PHP上传
Jul 14 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
May 10 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
PHP jQuery表单,带验证具体实现方法
Feb 15 PHP
使用PHPMailer实现邮件发送代码分享
Oct 23 PHP
PHP输出两个数字中间有多少个回文数的方法
Mar 23 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
PHP实现文件上传操作和封装
Mar 04 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
如何让CI框架支持service层
2014/10/29 PHP
JavaScript和JQuery实用代码片段(一)
2010/04/07 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
全面解读Python Web开发框架Django
2014/06/30 Python
django批量导入xml数据
2016/10/16 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
python判断无向图环是否存在的示例
2019/11/22 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
什么是数据抽象
2016/11/26 面试题
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
销售顾问的岗位职责
2013/11/13 职场文书
服装设计专业毕业生求职信
2014/04/09 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
2014年工程工作总结
2014/11/25 职场文书
单位接收函格式
2015/01/30 职场文书
docker 制作mysql镜像并自动安装
2022/05/20 Servers