« MySQLの暗号化をやってみよう | トップページ | PEARを使ってディレクトリの中身を全削除する »

2007年03月15日

Movable TypeでSitemaps(サイトマッププロトコル)を作ってみよう

このブログは気が向いたときに書いているのですが、現時点で今月は過去最高のエントリー数になってます。このまま1週間に2,3回は書いていけたらいいなと思ってます。質が落ちてる気がしないでもないのですが、、、
何故、更新頻度が上がったかと言うとアクセスが増えて更新が楽しくなってきたことと、更にアクセス数を「もっと増やしたいなぁ」っと考えたときに更新頻度を上げるのがベストだと思ったからです^^;
とは言っても本腰でアクセス数を増やすならもっと情報をPEAR、Ajax等に絞ったほうが良さそうですが、「勉強したことをメモ程度に記録する」というこのサイトの本質から外れるのでしばらくはこのまま行きます。

さてそろそろ本題に入ります。以前に「GoogleのSitemaps(サイトマッププロトコル)」の制作方法を紹介しましたが、今回はMovable Typeのテンプレートに記述する方法を紹介します。これを使えば、サイトを更新するたびに自動でSitemapsを作ってくれます。

Movable Typeにログインをして、「テンプレート」→「インデックス」→「テンプレートの新規作成」をクリックします。
テンプレートの新規登録ページに移動しますので「テンプレート名」には「Google Sitemaps」など自由に名前をつけます。続いて「出力ファイル名」には「sitemap.xml」と入力します。
後は「再構築オプション」の「インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する」にチェックを入れます。

「テンプレートの内容」にサイトマッププロトコルを記述していきます。
まずはお決まり通りXMLの宣言とurlsetタグを記述します。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">

</urlset>


urlsetタグの中にトップページやエントリーのURLを記述していきます。
トップページの記述は以下のように記述します。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
  <url>
    <loc><$MTBlogURL encode_xml="1"$></loc>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
  </url>

</urlset>

「$MTBlogURL」にはその名の通り、ブログのトップページURLが呼び出されます。

更にその下に各エントリーのURLと最終更新日を記述します。

<MTEntries lastn="9999">
<url>
  <loc><$MTEntryPermalink encode_xml="1"$></loc>
  <lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
</url>
</MTEntries>

「MTEntries」はエントリーを挿入する際に使用します。
「MTEntries lasten="9999"」は最初のエントリーから9999個のエントリーを順番に呼び出しなさいという指示になります。エントリーが9999個以下の場合は、全てのエントリーが呼び出された時点で終了します。尚、「lasten="9999"」を入れなかった場合、最新の一部のエントリーしか表示されませんのでご注意ください。
「$MTEntryPermalink」はURLを、「$MTEntryModifiedDate」は最終更新日を呼び出しています。

次にエントリーの下にカテゴリを入れます。

<MTCategories>
<url>
  <loc><$MTCategoryArchiveLink encode_xml="1"$></loc>
  <lastmod><$MTDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
</url>
</MTCategories>

「MTCategories」は各カテゴリを順次呼び出します。
「$MTCategoryArchiveLink」はURLを、「$MTDate」は構築日を呼び出しています。構築日よりも「カテゴリ内の最新エントリーデータの更新日」がセットできればベストだと思ったのですが、リファレンスを見ても都合の良いのがありませんでした^^;

カテゴリの下に月別(アーカイブ)のリンクを記述します。

<MTArchiveList archive_type="Monthly">
<url>
  <loc><$MTArchiveLink encode_xml="1"$></loc>
  <lastmod><$MTArchiveDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
</url>
</MTArchiveList>

「MTArchiveList」 type="Monthly"」で月別(アーカイブ)を順番に呼び出します。
「$MTArchiveLink」でURLを、「$MTArchiveDate」でその月の1日の日付が呼び出されます。「$MTArchiveDate」を「$MTArchiveDateEnd」に書き換えてもいいかもしれませんが、最新月のデータの更新日に未来の日付が入るので辞めたほうが無難かと思います。

最終的には以下のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
  <url>
    <loc><$MTBlogURL encode_xml="1"$></loc>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
  </url>

  <MTEntries lastn="9999">
  <url>
    <loc><$MTEntryPermalink encode_xml="1"$></loc>
    <lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
  </url>
  </MTEntries>

  <MTCategories>
  <url>
    <loc><$MTCategoryArchiveLink encode_xml="1"$></loc>
    <lastmod><$MTDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
  </url>
  </MTCategories>

  <MTArchiveList archive_type="Monthly">
  <url>
    <loc><$MTArchiveLink encode_xml="1"$></loc>
    <lastmod><$MTArchiveDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
  </url>
  </MTArchiveList>
</urlset>

URLはバッティングしないので問題ないとは思いますが、上記のテンプレートを使うことで検索エンジンの順位が下がったりインデックスが削除されても本サイトでは責任を負えませんので予めご了承ください。

・関連記事
GoogleのSitemaps(サイトマッププロトコル)を作ろう

トラックバック

このエントリーのトラックバックURL:
http://www.s-memo.net/mt/mt-tb.cgi/37

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)