Radiant CMSでGoogle sitemap.xmlに対応する

石上です。

Google Sitemapは、Googleのクローラーにウェブサイトの更新を知らせるXMLファイルです。Googleのクローラーは、このファイルを元にインデックスを効率的に、かつ漏れなく作成することができるようになります。ちなみに、Google Sitemapの効果を検証する – 検索エンジン対策では、Google Sitemapsを利用する事によってSEOに有効だとしています。作成するのは面倒ですが、SEO対策にもなるようなので是非とも作成しましょう。

今回は、このGoogle SitemapにRadiant CMSで簡易的に対応してみたいと思います。

まず、更新情報に含めたくないページに「no_html」というような除外の目印となるパートを加えます。私の場合、RSSファイルやrobots.txtなどに加えました。

次に、「Google Sitemap」というレイアウトを作成します。その際、Content-typeを「text/xml」にするのがミソです。

レイアウト: Google Sitemap

<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<r:content />
</urlset>
<span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;</span>
<span class="nt">&lt;urlset</span> <span class="na">xmlns=</span><span class="s">&quot;http://www.google.com/schemas/sitemap/0.84&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;r:content</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;/urlset&gt;</span>

次に、「sitemap_children」というスニペットを作成します。このスニペットのループの中で自分自身を呼び出すことで、再帰的に階層構造を巡回することが出来ます。ベースとなるURLは、各々の環境に合わせて変更してください。

スニペット: sitemap_children

<r:children:each>
<r:unless_content part="no_html">
<url>
<loc>http://www.example.com<r:url /></loc>
<priority>0.5</priority>
<changefreq>weekly</changefreq>
<lastmod><r:date format="%Y-%m-%dT%H:%M+09:00" for="updated_at" /></lastmod>
</url>
</r:unless_content>
<r:snippet name="sitemap_children" />
</r:children:each>
<span class="nt">&lt;r:children:each&gt;</span>
<span class="nt">&lt;r:unless_content</span> <span class="na">part=</span><span class="s">&quot;no_html&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;url&gt;</span>
<span class="nt">&lt;loc&gt;</span>http://www.example.com<span class="nt">&lt;r:url</span> <span class="nt">/&gt;&lt;/loc&gt;</span>
<span class="nt">&lt;priority&gt;</span>0.5<span class="nt">&lt;/priority&gt;</span>
<span class="nt">&lt;changefreq&gt;</span>weekly<span class="nt">&lt;/changefreq&gt;</span>
<span class="nt">&lt;lastmod&gt;&lt;r:date</span> <span class="na">format=</span><span class="s">&quot;%Y-%m-%dT%H:%M+09:00&quot;</span> <span class="na">for=</span><span class="s">&quot;updated_at&quot;</span> <span class="nt">/&gt;&lt;/lastmod&gt;</span>
<span class="nt">&lt;/url&gt;</span>
<span class="nt">&lt;/r:unless_content&gt;</span>
<span class="nt">&lt;r:snippet</span> <span class="na">name=</span><span class="s">&quot;sitemap_children&quot;</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;/r:children:each&gt;</span>

最後に、「sitemap.xml」というページを作成します。ルートのすぐ下に作成しましょう。レイアウトとして先ほど作成した「Google Sitemap」を指定すると、このページの処理結果が<r:content />の部分に出力されます。

ページ: sitemap.xml

<r:find url="/">
<url>
<loc>http://www.example.com<r:url /></loc>
<priority>1.0</priority>
<changefreq>daily</changefreq>
<lastmod><r:date format="%Y-%m-%dT%H:%M+09:00" for="updated_at" /></lastmod>
</url>
<r:snippet name="sitemap_children" />
</r:find>
<span class="nt">&lt;r:find</span> <span class="na">url=</span><span class="s">&quot;/&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;url&gt;</span>
<span class="nt">&lt;loc&gt;</span>http://www.example.com<span class="nt">&lt;r:url</span> <span class="nt">/&gt;&lt;/loc&gt;</span>
<span class="nt">&lt;priority&gt;</span>1.0<span class="nt">&lt;/priority&gt;</span>
<span class="nt">&lt;changefreq&gt;</span>daily<span class="nt">&lt;/changefreq&gt;</span>
<span class="nt">&lt;lastmod&gt;&lt;r:date</span> <span class="na">format=</span><span class="s">&quot;%Y-%m-%dT%H:%M+09:00&quot;</span> <span class="na">for=</span><span class="s">&quot;updated_at&quot;</span> <span class="nt">/&gt;&lt;/lastmod&gt;</span>
<span class="nt">&lt;/url&gt;</span>
<span class="nt">&lt;r:snippet</span> <span class="na">name=</span><span class="s">&quot;sitemap_children&quot;</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;/r:find&gt;</span>

これで完成です。ルート直下の「/sitemap.xml」にアクセスして正しく出力されているか確認しましょう。以下のように出来ていれば完成です。

http://www.example.com/sitemap.xml

<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;</span>
<span class="nt">&lt;urlset</span> <span class="na">xmlns=</span><span class="s">&quot;http://www.google.com/schemas/sitemap/0.84&quot;</span><span class="nt">&gt;</span>

<url>
<loc>http://www.example.com/</loc>
<priority>1.0</priority>
<changefreq>daily</changefreq>
<lastmod>2007-07-04T10:34+09:00</lastmod>
</url>
<url>
<loc>http://www.example.com/news/</loc>
<priority>0.5</priority>
<changefreq>weekly</changefreq>
<lastmod>2007-07-06T16:15+09:00</lastmod>
</url>
…(略)

Bookmark and Share