Sitemaps 0.90 用テンプレート(MT4対応)

Sitemaps 0.90 用テンプレート(MT4対応)

Posted at October 31,2007 1:15 AM
Tag:[Customize, MovableType, Sitemap]

Sitemaps 0.90 用テンプレート(Google・Yahoo!・MSN サポート予定)」で公開していた Sitemaps 0.90 用テンプレートについて、ご要望を頂きましたので Movable Type 4 対応に修正しました。

Sitemaps 0.90 に対応した情報を公開することで、Google、Yahoo、Microsoft の各検索エンジンにサイト情報を適切に通知できるようになります(検索エンジンのインデックスにウェブページのすべてを含むことを保証するものではありません。クロールを補完するための仕組みです)。

1.テンプレートの変更点

変更点は下記の通りです。

  • ウェブページに対応
  • 全ての種類のアーカイブテンプレートに対応
  • ブログ記事アーカイブの全件出力にMTSetVarBlockタグを使用
  • アーカイブインデックス用のMTLinkタグのtemplate属性名を修正

以下、Sitemaps 0.90 用テンプレートの設定方法です。

2.テンプレート作成

ブログ管理画面より「デザイン」→「テンプレート」→「インデックステンプレートを作成」をクリック

  • テンプレート名:サイトマップ(名前は何でもいいです)
  • テンプレートの種類:カスタムインデックステンプレート
  • 出力ファイル名:sitemaps.xml
  • 再構築オプション:チェックする
  • ファイルへのリンク:(設定不要)
  • テンプレートの内容:下記 の内容をコピー&ペースト
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 
<MTIgnore>メインページ</MTIgnore>
<url>
<loc><$MTBlogURL encode_xml="1"$></loc>
<lastmod><$MTDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
<changefreq>daily</changefreq>
</url>
 
<MTIgnore>ブログ記事アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Individual"> 
<MTSetVarBlock name="blogentrycount"><$MTBlogEntryCount$></MTSetVarBlock>
<MTEntries lastn="$blogentrycount">
<url>
<loc><$MTEntryPermalink encode_xml="1"$></loc>
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
<priority>1.0</priority>
</url>
</MTEntries>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>ウェブページ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Page"> 
<MTPages>
<url>
<loc><$MTPagePermalink encode_xml="1"$></loc>
<lastmod><$MTPageModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
<priority>1.0</priority>
</url>
</MTPages>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>カテゴリー・アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Category"> 
<MTCategories>
<url>
<loc><$MTCategoryArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTCategories>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>ユーザー別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Author"> 
<MTArchiveList archive_type="Author">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>年別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Yearly"> 
<MTArchiveList archive_type="Yearly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>月別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Monthly"> 
<MTArchiveList archive_type="Monthly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>週別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Weekly"> 
<MTArchiveList archive_type="Weekly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>日別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Daily"> 
<MTArchiveList archive_type="Daily">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>ユーザー年別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Author-Yearly"> 
<MTArchiveList archive_type="Author-Yearly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>ユーザー月別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Author-Monthly"> 
<MTArchiveList archive_type="Author-Monthly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>ユーザー週別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Author-Weekly"> 
<MTArchiveList archive_type="Author-Weekly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>ユーザー日別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Author-Daily"> 
<MTArchiveList archive_type="Author-Daily">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>カテゴリ年別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Category-Yearly"> 
<MTArchiveList archive_type="Category-Yearly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>カテゴリ月別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Category-Monthly"> 
<MTArchiveList archive_type="Category-Monthly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>カテゴリ週別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Category-Weekly"> 
<MTArchiveList archive_type="Category-Weekly">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>カテゴリ日別アーカイブ</MTIgnore>
<MTIfArchiveTypeEnabled archive_type="Category-Daily"> 
<MTArchiveList archive_type="Category-Daily">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>
</url>
</MTArchiveList>
</MTIfArchiveTypeEnabled>
 
<MTIgnore>アーカイブインデックス</MTIgnore>
<url>
<loc><$MTLink template="アーカイブインデックス" encode_xml="1"$></loc>
<lastmod><$MTDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</url>
 
</urlset>

上記を設定後、保存・再構築します。

これでメインページと同じディレクトリに sitemaps.xml が生成されていればOKです。確認方法は、ブラウザから sitemaps.xml をURL指定して実行してみるか、FTPツールでメインページと同じディレクトリに sitemaps.xml があることを探してください。

3.その他

他のサイトでもサイトマップ用テンプレートは数多く公開されていますが、当サイトでは下記の点を改善しています。

3.1 アーカイブの選択

各アーカイブ(カテゴリー/エントリー/月別/週別/日別等)の表示は、MTIfArchiveTypeEnabled を用いているので、使用中のアーカイブのみを自動的に対象に含めます。
つまりデフォルトテンプレートの運用であれば、サイトマップテンプレートの修正は不要です。

3.2 ファイルの最終更新日

各アーカイブページの更新日時は、下記の設定により、更新順に並べ替えた最新の1件を用いるようにしています。これにより過去のエントリーを修正した場合も、その時刻が反映されます。

Google の説明では、静的ファイルは「ファイルを実際に更新した日付」とありますが、Movable Type の静的ファイル生成、つまり再構築はアーカイブ別に行われるため、MTEntryModifiedDate が適正と思われます(間違ってたらすいません)。これにより、更新されていない URL はクロールしなくなるらしいので、サーバー負荷や CPU 使用量を軽減できます。

<MTEntries lastn="1" sort_by="modified_on">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>

下の設定では、該当するアーカイブに属する最新エントリーの更新時刻しか収集されません。つまり、過去のエントリーを修正した時刻が反映されないという欠点があります。

<MTEntries lastn="1">
<lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</MTEntries>

ただし、インデックステンプレート(メインページ/アーカイブページ)については正確な更新日を取得する手段がないため、MTDate(再構築日時)を利用しています。

3.3 タイムゾーン

タイムゾーンに MTBlogTimeZone を用いています。現地時刻表記の場合は MTBlogTimeZone を用いてタイムゾーン・オフセットを付与するのが適切と思われます。

<lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>

utc 属性を用いれば協定世界時になるので、MTBlogTimezone の代わりに下記の設定でも大丈夫なようです。

<lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>

W3C Datetime によれば、青色部分の「Z」は時刻をUTC (協定世界時) で表記した場合に付与する特別な指定子です。

なお、utc 属性は MTDate / MTEntryDate / MTEntryModifiedDate / MTEntryCreateDate / MTTemplateCreatedOn タグで利用することができます(MT4 公式マニュアルには掲載されていません)。

3.4 優先度

インデクシングして欲しい(と思われる)エントリー・アーカイブに priority を設定し、相対値を少し高くしています。

4.注意事項

Sitemap ファイル(sitemaps.xml)は UTF-8 で保存する必要があります。ブログの文字コードが UTF-8 以外の場合は下記のプラグインを用いて、Sitemaps の文字コードを UTF-8 で出力しましょう。

Ogawa::memorandaMT-I18Nプラグイン

MT-I18Nプラグインをインストールした後、Sitemaps のテンプレート全体を MTEncodeText タグで括ります。

<MTEncodeText from="[ブログの文字コード]" to="utf8">
    :
[Sitemap の内容]
    :
</MTEncodeText>
関連記事
トラックバックURL


トラックバック

Sitemaps 0.90 に対応したサイトマップファイルの生成 from MovableTypeのススメ
小粋空間さんでSitemaps 0.90 用テンプレートが公開されていましたので... [続きを読む]

Tracked on October 31, 2007 3:20 PM

Sitemaps 0.90 用テンプレート(MT4対応) from 自転車少年になろう。
以前に「MovableTypeでGoogle Sitemapsを自動生成」でSi... [続きを読む]

Tracked on May 26, 2008 1:21 PM

8.SEO対策を考える2(sitemap等) from 超適当にブログを作ってみた
SEO対策を考えるその2  ここではGoogleへのSEO対策に欠かせないサービ... [続きを読む]

Tracked on August 26, 2008 3:38 AM

MT4.01から4.21にアップグレード。 from On The Wind
突然思い立ってMTをアップグレードしてみました。 Movable Type アッ... [続きを読む]

Tracked on September 13, 2008 10:36 PM

sitemaps.xmlを設置する from リンク集「ヒトコト」
sitemaps.xmlと言うものがあります。(ファイル名は任意ですが、大抵はこ... [続きを読む]

Tracked on September 16, 2008 10:49 AM

備忘録:Sitemaps 0.90用テンプレート from BCLRADIO.COM
Sitemaps 0.90用テンプレート 設定の備忘録です [続きを読む]

Tracked on January 15, 2009 2:32 PM
コメント

ありがとうございました!!
無事サイトマップ追加できました。
本の発売おめでとうございます。昨日注文したので明日には到着するかなー
と思ってます。ではー。

[1] Posted by mr.38 : October 31, 2007 3:20 AM

>mr.38さん
こんにちは。
ご連絡ありがとうございました。
うまくできたようで良かったです。

拙著のご購入&ご連絡ありがとうございます!
3章・5章・6章のサンプルデータのダウンロードサイトではサポートサイトも兼ねてますので、ご活用頂ければ幸いです。
ではでは!

[2] Posted by yujiro logo : October 31, 2007 4:50 PM

yujiroさん、こんにちは。
当記事を参考にsitemapsを設定してみたのですが、再構築のときに「MTLinkのアーカイブインデックスがありません」のようなメッセージがでて再構築エラーになります。
最後の「アーカイブインデックス」の部分だけ削って設定したらエラーになることなく再構築が完了しました。
エラーの原因が分からないので自分ではどうしようもないのですが、前述したように「アーカイブインデックス」の部分だけ削って運用してて特に問題がないのであればそのままにしておこうかと考えています。

[3] Posted by もんち logo : May 22, 2008 6:39 PM

>もんちさん
こんにちは。
ご返事遅くなり申し訳ありません。
ご質問の件ですが、ご利用のブログのインデックステンプレートに「アーカイブインデックス」がなければ、削除して問題ありません。
それではよろしくお願い致します。

[4] Posted by yujiro logo : June 6, 2008 6:26 PM

はじめまして、最近ちょくちょく拝見させていただいています。
無事にサイトマップを追加し、グーグル、ヤフーに登録することができました。
ありがとうございました。

パーフェクト・ガイド購入しました。
私には、少々難解の箇所がありますが(汗)、おかげさまで何とかサイトを立ち上げることができました。
再度、本当にありがとうございました。

[5] Posted by coomote : September 27, 2008 4:34 PM

>coomoteさん
はじめまして。
ご利用ありがとうございます。
うまく登録できたようでよかったです。

また拙著ご購入くださりありがとうございました。
大変申し訳ありませんが、校正が完璧に行えていないため、大変申し訳ありませんが、不明な点がありましたらサポートサイトの訂正情報を参照されるか、またはサポートサイトのフィードバックにてご連絡ください。
それでは今後ともよろしくお願い致します。

[6] Posted by yujiro logo : September 29, 2008 1:44 AM

お世話になります。

再構築で「Can't call method "id" on an undefined value at lib/MT/ArchiveType/Date.pm line 57. 」というエラーが出ます。何か考えられる点は御座いますでしょうか。

上記だけではわからないかな。

御手数お掛け致します。

[7] Posted by hisataka : January 15, 2009 1:12 AM

>hisatakaさん
こんばんは。
ご質問の件ですが、このエントリーに掲載しているテンプレート(だけ)を再構築されたのでしょうか?
またMTのバージョンは何でしょうか。
もう少し情報頂ければ幸いです。

[8] Posted by yujiro logo : January 15, 2009 1:24 AM

御手数お掛けします。

このテンプレートを設定後、保存再構築をすると上記のエラーが出ます。
MTのバージョンは4.2です。

よろしくおねがいします。

[9] Posted by hisataka : January 15, 2009 1:37 AM

>hisatakaさん
こんにちは。
4.2および4.23でこのエントリーのテンプレートを再構築しましたが同様の事象は発生しませんでした。

なお、エラーが発生している箇所は、日付ベースのカテゴリーアーカイブに関連する処理なので、テンプレートにある以下の日付ベースのカテゴリーの部分を削除すれば再構築できるかもしれません(根本的な解決にはなりませんが…)。

<MTIgnore>カテゴリ年別アーカイブ</MTIgnore>
…中略…
<MTIgnore>カテゴリ日別アーカイブ</MTIgnore>
…中略…
</MTIfArchiveTypeEnabled>

それではよろしくお願い致します。

[10] Posted by yujiro logo : January 15, 2009 11:00 AM

こんにちは。
回答ありがとうございました。
上記の内容で、削除しましたところ保存と再構築ができました。
一つ解決できたので良かったです。
大変御手数をお掛けし、申し訳御座いません。

このたびはありがとうございました。

[11] Posted by hisataka : January 15, 2009 2:03 PM

いつも参考にさせていただいてます。

サイトマップ追加させていただきました。
ブログ記事は正常に反映されているのですが
ウェブページが1ページのみ書き出されてその他のページが反映されませんでした。

こちらに原因があるのは確実なのですが…

この様な現象は僕だけでしょうか?

[12] Posted by NORI : January 8, 2010 6:27 AM

mixiにて解決いたしました。
僕のサイトでは<MTPages>ではうまく出力できませんでした。

マルチポストになってしまし申し訳ございませんでした。

[13] Posted by NORI : January 14, 2010 1:51 PM

お世話になります
MT4のエントリーが1000を超え、インデックスプレートの再構築時にエラー(Can't call method "execute" on an undefined value)が発生しました

「テンプレートを編集」をクリックしたらこちらのテンプレが原因のようです

先日まで大丈夫だったのに、いきなりのエラーです
ググりましたが、よい情報はございません

サポートしていただいたらありがたいです よろしくお願いします

エラーはインデックステンプレートのみで、あとのテンプレは問題ございません

[14] Posted by ひでぼん : April 1, 2011 10:36 PM

お世話になります

以前にエラーが出ると相談したひでぼんです
この度、サーバー移転して色々と変更したらエラーは表示されず
サイトマップは出来ました

私の不手際です ご迷惑をおかけ致しました

[15] Posted by ひでぼん : February 25, 2012 10:42 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)