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 相关文章推荐
模板引擎Smarty深入浅出介绍
Dec 06 PHP
简化php模板页面中分页代码的解析
Feb 06 PHP
PHP 图像尺寸调整代码
May 26 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
简单谈谈favicon
Jun 10 PHP
php is_writable判断文件是否可写实例代码
Oct 13 PHP
Yii2实现log输出到file及database的方法
Nov 12 PHP
PHP关于foreach复制知识点总结
Jan 28 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 PHP
PHP扩展安装方法步骤解析
Nov 24 PHP
php png失真的原因及解决办法
Oct 24 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
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
2018/10/30 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
javascript 数组学习资料收集
2010/04/11 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
python传递参数方式小结
2015/04/17 Python
Python解析json文件相关知识学习
2016/03/01 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
Python中pillow知识点学习
2018/04/30 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
文明村创建实施方案
2014/03/27 职场文书
三项教育活动实施方案
2014/03/30 职场文书
如何写早恋检讨书
2014/09/10 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
师德师风个人总结
2015/02/06 职场文书
入党个人总结范文
2015/03/02 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL