こちらで書いたように動的なページのサイトマップをつくるのだが、このままだとURLをひとつひとつ手打ちしなくてはいけないのでこれを自動的に取得し表示させる。
<?php
require(“Class.Sitemap.php”);
require(“/hoge/urlget1.php”);
//URLデータ取得
url_get(‘なんとかかんとか’);
//echo “<pre>”;
//print_r($url);
//echo “</pre>”;
foreach ($url as $array[]['url']){
}
$i = 0;
while ($i <= count($url)-1){
$array[$i]['lastmod'] = gmdate(‘c’);
$array[$i]['changefreq'] = “daily”;
$array[$i]['priority'] = “0.5″;
$i = $i+1;
}
//クラスを呼び出してGO
$Sitemap = new Sitemap();
$Sitemap->create($array);
$Sitemap->output();
?>
ここでurlget1.phpの中身はurl_getという関数でキーワードを入力するとURLを吐き出して$urlを戻り値としています。$urlは配列になっていここから$array[]['url']にforeach文で格納しています。
$array[]['lastmod'] についてはgmdate(‘c’)によりグリニッジのisoのタイムコードを取得しています。$array[]['changefreq']と$array[]['priority'] は固定値を代入しています。ここはwhile文で$i=0から$i=URL取得数-1回まわして値を代入していますがfor文やforeachで回すとうまくいきません。理由は?ですが(まだ勉強不足)。
こんな感じでサイトマップが構築できます。
<?xml version=”1.0″ encoding=”UTF-8″ ?>
- <urlset xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“ xsi:schemaLocation=”http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/09/sitemap.xsd“ xmlns=”http://www.sitemaps.org/schemas/sitemap/0.9“>
<loc>http://hoge.hoge.com/123.html</loc>
<lastmod>2010-04-26T12:03:54+00:00</lastmod>
<changefreq>daily</changefreq>
</url>
<loc>http://hoge.hoge.com/456.html</loc>
<lastmod>2010-04-26T12:03:54+00:00</lastmod>
<changefreq>daily</changefreq>
</url>
<loc>http://hoge.hoge.com/789.html</loc>
<lastmod>2010-04-26T12:03:54+00:00</lastmod>
<changefreq>daily</changefreq>
</url>
さらにおまけですがショップなどを構築する時、動的ページと静的ページが混在する場合もあると思います。そんな時にどうしたらいいかというと例えば、このようなphpプログラムに静的ページを含んでしまう方法もあります。ただ、数が多いと大変です。もしWordPressを使っている場合、SEO用のプラグインのALL IN ONE SEOというものがります。このプログラムでは自動的に投稿や固定ページのサイトマップを作ってくれますがさらにオプションとしてURLを入れることができます。例えば、今回作った動的ページ用のサイトマップURLもそれに含めることができまます。