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+DBM的同学录程序(1)
Oct 09 PHP
php中取得URL的根域名的代码
Mar 23 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
Jun 01 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
Jun 23 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
php中cookie实现二级域名可访问操作的方法
Nov 11 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
php for 循环使用的简单实例
Jun 02 PHP
PHP网站自动化配置的实现方法(必看)
May 27 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 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
我的论坛源代码(一)
2006/10/09 PHP
php使用GeoIP库实例
2014/06/27 PHP
PHP的拦截器实例分析
2014/11/03 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
javascript 事件处理程序介绍
2012/06/27 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
jquery实现回车键触发事件(实例讲解)
2017/11/21 jQuery
Js跳出两级循环方法代码实例
2020/09/22 Javascript
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
Python函数学习笔记
2008/10/07 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
python图像处理入门(一)
2019/04/04 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
pandas的相关系数与协方差实例
2019/12/27 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
亚马逊印度站:Amazon.in
2017/10/15 全球购物
小区门卫管理制度
2014/01/29 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
社区服务标语
2014/07/01 职场文书
党校毕业心得体会
2014/09/13 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
关于运动会的广播稿
2015/08/19 职场文书
vue组件vue-esign实现电子签名
2022/04/21 Vue.js