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设计模式 Builder(建造者模式)
Jun 26 PHP
php 搜索框提示(自动完成)实例代码
Feb 05 PHP
PHP中ob_start函数的使用说明
Nov 11 PHP
在win7中搭建Linux+PHP 开发环境
Oct 08 PHP
php生成年月日下载列表的方法
Apr 24 PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 PHP
php简单备份与还原MySql的方法
May 09 PHP
Yii2框架使用计划任务的方法
May 25 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
PHP实现的解汉诺塔问题算法示例
Aug 06 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
Mar 23 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 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
详谈js模块化规范
2017/07/07 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
vue实现组件之间传值功能示例
2018/07/13 Javascript
Vue 配合eiement动态路由,权限验证的方法
2018/09/26 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
[02:16]DOTA2英雄基础教程 干扰者
2014/01/15 DOTA
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
简单谈谈python的反射机制
2016/06/28 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
《小池塘》教学反思
2014/02/28 职场文书
个人自荐材料
2014/05/23 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
白酒营销策划方案
2014/08/17 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python