GoogleやYahoo!などでは、XML形式(標準仕様)のサイトマップの作り方の方法で作成したXML形式(標準仕様)のサイトマップをGoogle ウェブマスター ツールやYahoo! Site Explorerから登録しておけば、検索エンジンのクローラロボットはそれを利用してWebサイトをクロールしてくれます。
しかし、MSNなどでは、XML形式(標準仕様)のサイトマップの実際の扱い方については定かではありません。こういった場合、ROR - Structured Feedsで提案されているROR形式のサイトマップを作成することによって、XML形式(標準仕様)のサイトマップに対応していない検索エンジンでもWebサイトを的確にクロールしてくれることが期待できます。ROR形式のサイトマップには、RDFによるものとRSS 2.0をベースにしたものとがありますが、ここでは、オープンソースCMSのMODxでの、Dittoを使ったRSS 2.0ベースのサイトマップの作り方を説明します。
ここで作成するリソースの名前は、例としてそれぞれ適当なリソース名を付けている。実際の運用においては、他のリソース名を付けても特に問題はない。
ROR形式(RSS 2.0)のサイトマップ用テンプレートで使用するGetFieldスニペットをインストールします。
サイトマップ用テンプレートでdescription要素を使用しない場合には、GetFieldスニペットをインストールする必要はない。ただし、その場合にはRSS 2.0としては不正なフィードとなる。
DittoでROR形式(RSS 2.0)のサイトマップを出力するためのテンプレートを作成します。
<?xml version="1.0" encoding="[(modx_charset)]"?>
<rss version="2.0" xmlns:ror="http://rorweb.com/0.1/" >
<channel>
<title>[(site_name)]</title>
<link>[(site_url)]</link>
<description>[[GetField? &docid=`トップページのドキュメントID` &field=`description`]]</description>
<item>
<title>[(site_name)]</title>
<link>[(site_url)]</link>
<ror:about>sitemap</ror:about>
<ror:type>SiteMap</ror:type>
</item>
[*content*]
</channel>
</rss>
DittoでROR形式(RSS 2.0)のサイトマップを出力するためのチャンクを作成します。
<item>
<title>[+title+]</title>
<link>[+url+]</link>
<ror:updatePeriod>week</ror:updatePeriod>
<ror:sortOrder>0</ror:sortOrder>
<ror:updated>[+editedon:date=`%Y-%m-%dT%H:%M:%S+09:00`+]</ror:updated>
<ror:resourceOf>sitemap</ror:resourceOf>
</item>
updated要素の内容には、汎用性や拡張性を重視してPHxのモディファイアを使用しているが、Dittoのプレースホルダである[+date+]
を使用することもできる。その場合には、Dittoのスニペットコールに&dateFormat=`%Y-%m-%dT%H:%M:%S+09:00`
を追加する。
ROR形式(RSS 2.0)のサイトマップ用にドキュメントを作成します。
[[Ditto? &parents=`0` &showInMenuOnly=`1` &depth=`10` &display=`all` &sortBy=`menuindex` &sortDir=`ASC` &format=`html` &tpl=`サイトマップ用のチャンク名` &language=`english`]]
「コンテンツタイプ」に「application/rss+xml」がない場合は、MODxマネージャの「ツール」→「MODx設定」→「サイト」タブの「カスタムコンテントタイプ」から追加する。application/rss+xmlメディアタイプに未対応のユーザーエージェントにも配慮する場合は、「コンテンツタイプ」を「text/xml」に設定する。または、ユーザーエージェントによってメディアタイプを切り替えるためのphiXmlHeaderプラグインを導入する。
ここでのDittoのスニペットコールは、サイトマップとして出力するドキュメント全てに「メニューに表示」がチェックされていることを前提としている(&showInMenuOnly=`1`
)。
作成したROR形式(RSS 2.0)のサイトマップはlink要素に次のように記述しておくと、検索エンジンなどのクローラロボットがサイトマップをもとにWebサイトをクロールしてくれるようになります。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/assets/templates/phize.net/css/style.css" type="text/css" charset="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<link rel="alternate" type="コンテンツタイプ" title="ROR 0.1" href="[(base_url)][~サイトマップ用ドキュメントのドキュメントID~]" />
<title>ページタイトル</title>
</head>