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 团购折扣计算公式
Nov 24 PHP
php文本转图片自动换行的方法
Mar 13 PHP
php去掉URL网址中带有PHPSESSID的配置方法
Jul 08 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
Dec 14 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
thinkphp实现分页显示功能
Dec 03 PHP
简单谈谈PHP中的Reload操作
Dec 12 PHP
实例分析基于PHP微信网页获取用户信息
Nov 24 PHP
PHP信号处理机制的操作代码讲解
Apr 19 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中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
PHP校验ISBN码的函数代码
2011/01/17 PHP
session在PHP大型web应用中的使用
2011/06/25 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
实例解析Array和String方法
2016/12/14 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
python中for用来遍历range函数的方法
2018/06/08 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
《维生素c的故事》教学反思
2014/02/18 职场文书
超市创意活动方案
2014/08/15 职场文书
社保转移委托书范本
2014/10/08 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
文言文辞职信
2015/02/28 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
Nginx缓存设置案例详解
2021/09/15 Servers