web-dev-qa-db-ja.com

Codeigniterを使用したサイトマップの生成

Codeigniterアプリケーションでサイトマップを生成する必要があります。いくつかのライブラリを見つけましたが、それらはすべて古く、バグがあります。

これには本当に別のライブラリが必要ですか?

Codeigniterでサイトマップを生成する最良の方法を知りたい。

19
bmrinal

あなたは私のコードを使うことができます:

controllers/seo.php

Class Seo extends CI_Controller {

    function sitemap()
    {

        $data = "";//select urls from DB to Array
        header("Content-Type: text/xml;charset=iso-8859-1");
        $this->load->view("sitemap",$data);
    }
}

views/sitemap.php

<?= '<?xml version="1.0" encoding="UTF-8" ?>' ?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc><?= base_url();?></loc> 
        <priority>1.0</priority>
    </url>

    <!-- My code is looking quite different, but the principle is similar -->
    <?php foreach($data as $url) { ?>
    <url>
        <loc><?= base_url().$url ?></loc>
        <priority>0.5</priority>
    </url>
    <?php } ?>

</urlset>

config/routes.phpに行を追加します

$route['seo/sitemap\.xml'] = "seo/sitemap";

コードにエラーがある場合は申し訳ありませんが、特にあなたのために作成しました。エラーがある場合は、原理を理解することで簡単に修正できます。

55
roev

ヘッダーを設定する必要があります:

<?php header('Content-type: text/xml'); ?>
<?= '<?xml version="1.0" encoding="UTF-8" ?>' ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc><?= base_url();?></loc> 
        <priority>1.0</priority>
    </url>
    <!-- My code is looking quite different, but the principle is similar -->
    <?php foreach($data as $url) { ?>
    <url>
        <loc><?= base_url().$url ?></loc>
        <priority>0.5</priority>
    </url>
    <?php } ?>
</urlset>
13
r33s

次のようにrobots.txtにサイトマップのリンクを追加することを強くお勧めします。

Sitemap: http://www.yoursite.com/seo/sitemap
4
Tarek

CodeIgniterモデルを作成しました。これにより、サイトマップコントローラーから関数を呼び出し、サイトマップへのフィードがすべて完了するとXMLを出力できます。

CodeIgniterモデルを見て、再利用してください。

https://github.com/alphabase/CodeIgniter-Sitemap-Generator

1
Gerard Nijboer