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 相关文章推荐
搜索和替换文件或目录的一个好类--很实用
Oct 09 PHP
PHP循环结构实例讲解
Feb 10 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
php设计模式之委托模式
Feb 13 PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 PHP
PHP带节点操作的无限分类实现方法详解
Nov 09 PHP
PHP文件与目录操作示例
Dec 24 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
php curl批处理实现可控并发异步操作示例
May 09 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 PHP
php微信公众号开发之校园图书馆
Oct 20 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使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
javascript的BOM汇总
2015/07/16 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
Anaconda入门使用总结
2018/04/05 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
"引用"与指针的区别是什么
2016/09/07 面试题
社区志愿者心得体会
2014/01/03 职场文书
学生打架检讨书大全
2014/01/23 职场文书
大学社团活动策划书
2014/01/26 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
正规借条模板
2015/05/26 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
简述python四种分词工具,盘点哪个更好用?
2021/04/13 Python
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js
Win11如何查看显卡型号 Win11查看显卡型号的方法
2022/08/14 数码科技