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入门
Oct 09 PHP
require(),include(),require_once()和include_once()的异同
Jan 02 PHP
PHP 中文乱码解决办法总结分析
Jul 30 PHP
php设计模式 Builder(建造者模式)
Jun 26 PHP
PHP安全配置详细说明
Sep 26 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
May 08 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
php项目开发中用到的快速排序算法分析
Jun 25 PHP
php file_get_contents取文件中数组元素的方法
Apr 01 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
php封装的page分页类完整实例代码
Feb 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对gzip文件或者字符串解压实例参考
2008/07/25 PHP
XML的代替者----JSON
2007/07/21 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
JS.elementGetStyle(element, style)应用示例
2013/09/24 Javascript
详解JavaScript中的六种错误类型
2017/09/21 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python3实现生成随机密码的方法
2014/08/23 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
详解python环境安装selenium和手动下载安装selenium的方法
2020/03/17 Python
Python如何省略括号方法详解
2020/03/21 Python
Python如何读写CSV文件
2020/08/13 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
会计师事务所审计实习自我鉴定
2013/09/20 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
人事主管岗位职责
2014/01/30 职场文书
驾驶员培训方案
2014/05/01 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
留学经费担保书
2014/05/12 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
工作简历自我评价
2015/03/11 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
python中sys模块的介绍与实例
2021/04/17 Python
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python