Phize on the Web

ROR形式(RSS 2.0)のサイトマップの作り方 - MODx

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ベースのサイトマップの作り方を説明します。

ここで作成するリソースの名前は、例としてそれぞれ適当なリソース名を付けている。実際の運用においては、他のリソース名を付けても特に問題はない。

GetFieldスニペットのインストール

ROR形式(RSS 2.0)のサイトマップ用テンプレートで使用するGetFieldスニペットをインストールします。

  1. GetFieldスニペットをダウンロードする。
  2. 「GetField」という名前でスニペットを作成する。(スニペットの作成)

サイトマップ用テンプレートでdescription要素を使用しない場合には、GetFieldスニペットをインストールする必要はない。ただし、その場合にはRSS 2.0としては不正なフィードとなる。

サイトマップ用テンプレートの作成

DittoでROR形式(RSS 2.0)のサイトマップを出力するためのテンプレートを作成します。

  1. 「ROR」という名前でテンプレートを作成する。(テンプレートの作成)
  2. 「テンプレート コード (html)」に次のコードをコピー&ペーストする。
    <?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>
  3. 「保存」をクリックしてテンプレートを保存する。

サイトマップ用チャンクの作成

DittoでROR形式(RSS 2.0)のサイトマップを出力するためのチャンクを作成します。

  1. 「RorTpl」という名前でチャンクを作成する。(チャンクの作成)
  2. チャンクに次のコードをコピー&ペーストする。
        <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>
  3. 「保存」をクリックしてテンプレートを保存する。

updated要素の内容には、汎用性や拡張性を重視してPHxのモディファイアを使用しているが、Dittoのプレースホルダである[+date+]を使用することもできる。その場合には、Dittoのスニペットコールに&dateFormat=`%Y-%m-%dT%H:%M:%S+09:00`を追加する。

サイトマップ用ドキュメントの作成

ROR形式(RSS 2.0)のサイトマップ用にドキュメントを作成します。

  1. ドキュメントを作成する。
  2. 「全般」タブの「使用テンプレート」から「ROR」を選択する。
  3. 「ページ設定」タブの「コンテンツタイプ」から「application/rss+xml」を選択する。
  4. 「内容」に次のコードをコピー&ペーストする。
    [[Ditto? &parents=`0` &showInMenuOnly=`1` &depth=`10` &display=`all` &sortBy=`menuindex` &sortDir=`ASC` &format=`html` &tpl=`サイトマップ用のチャンク名` &language=`english`]]
  5. 「保存」をクリックしてドキュメントを保存する。

「コンテンツタイプ」に「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>
Copyright© 2006-2018 Phize on the Web All Rights Reserved.