如何在Codeigniter中创建动态站点地图

时间:2019-04-19 08:05:12

标签: php codeigniter sitemap

如何在Codeigniter中创建动态站点地图。我已经在Controller中创建了一个名为Sitemap.php的php文件,并创建了一个名为sitemap.php的视图,一切正常,但是显示了以下结果,而不是实际的XML文件,如下图所示。 enter image description here

Codeigniter Sitemap.php文件

<?php
 defined('BASEPATH') OR exit('No direct script access allowed');


 class Sitemap extends CI_Controller {


public function __construct()
{
    parent::__construct();   
    $this->load->database();
    $this->load->model('Constant_model');
    $this->load->helper('xml');

}

public function index()
{

  $query=  $this->db->query("SELECT url_slug FROM snippets UNION SELECT tag_name FROM tags");
    $data = $query->result();
    $data['items'] =$data;

    $this->load->view('sitemap', $data);
}
 }

查看-> sitemap.php文件

<?php echo'<?xml version="1.0" encoding="UTF-8" ?>' ?>
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
    <loc><?php echo base_url();?></loc>
    <priority>1.0</priority>
    <changefreq>daily</changefreq>
</url>


<!-- Sitemap -->
<?php foreach($items as $item) { ?>
<url>
    <loc><?php echo base_url()."item/".$item->url_slug ?></loc>
    <priority>0.5</priority>
    <changefreq>daily</changefreq>
</url>
<?php } ?>

2 个答案:

答案 0 :(得分:2)

您在控制器中缺少header设置,请像这样放置标题

Class Sitemap extends CI_Controller {

function sitemap()
{
    $query=  $this->db->query("SELECT url_slug FROM snippets UNION SELECT tag_name FROM tags");
    $data = $query->result();
    $data['items'] =$data;
    header("Content-Type: text/xml;charset=iso-8859-1");
    $this->load->view('sitemap', $data);
 }
}

您的查看文件似乎还可以。

有关更多详细信息,Refer this link

答案 1 :(得分:0)

我遇到了同样的问题,在您的代码中需要在您的视图中关闭 </urlset>