CodeIgniter生成网站sitemap地图的方法
CodeIgniter生成网站sitemap地图的方法
发布时间:2016-12-29 来源:查字典编辑
摘要:1.建立了一个名为sitemap的控制器复制代码代码如下:sitemapxml->getArticle();$data['categorys...

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教程学习
编程开发子分类