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 相关文章推荐
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
php过滤表单提交的html等危险代码
Nov 03 PHP
php调用shell的方法
Nov 05 PHP
php采用file_get_contents代替使用curl实例
Nov 07 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
PHP实现原比例生成缩略图的方法
Feb 03 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
利用PHP生成静态html页面的原理
Sep 30 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
laravel框架语言包拓展实现方法分析
Nov 22 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 PHP
PHP Ajax跨域问题解决方案代码实例
Aug 01 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下一个非常全面获取图象信息的函数
2008/11/20 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
使用angular写一个hello world
2015/01/23 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
JavaScript中split() 使用方法汇总
2015/04/17 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
vue-axios使用详解
2017/05/10 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
[00:14]护身甲盾
2019/03/06 DOTA
Python 多核并行计算的示例代码
2017/11/07 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
大三毕业自我鉴定
2014/01/15 职场文书
自荐信如何制作?
2014/02/21 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
会计工作岗位职责
2015/02/03 职场文书
2015年市场部工作总结
2015/04/30 职场文书
如何写辞职信
2015/05/13 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
python文件目录操作之os模块
2021/05/08 Python
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL