サイトマップ

サイトマップとは、サイト全体のページの一覧、論理的階層構造(パンくず)、各ページに紐付くプロパティ情報(ページタイトルなど)を管理する概念です。CSV形式のテキストファイルで管理されます。

サイトマップの形式

サイトマップは次のようなCSV形式のファイルで定義されます。

文字エンコード
UTF-8
区切り文字
, (カンマ)
値を囲む
" (ダブルクオート)
エスケープ
"" (ダブルクオートを重ねる)
改行文字
CRLF (\r\n)

例:

"a","b","c"
"a,b","a ""b"" c"

サイトマップCSVの設置場所

サイトマップCSVは、サイトマップディレクトリに設置します。

  • ./_PX/sitemap/*.csv

このディレクトリに置かれた、拡張子 *.csv のファイルは全てサイトマップCSVとしてスキャンされ、自動的にロードされます。

サイトマップCSVの定義

サイトマップCSVの定義は、設定ファイルによって定義されています。設定ファイルの設置場所は下記の通りです。

  • ./_PX/configs/sitemap_definition.csv

初期状態での設定は次のようになっています。

キー 意味
Apathページのパス
Bcontentコンテンツファイルの格納先
CidページID
Dtitleページタイトル
Etitle_breadcrumbページタイトル(パン屑表示用)
Ftitle_h1ページタイトル(H1表示用)
Gtitle_labelページタイトル(リンク表示用)
Hlogical_path論理構造上のパス
Ilist_flg一覧表示フラグ
Jauth_levelアクセス権限レベル
Klayoutレイアウト
Lextension拡張子名
Morderby表示順
Nkeywordsmetaキーワード
Odescriptionmetaディスクリプション
Pcategory_top_flgカテゴリトップフラグ

sitemap_definition.csv を変更することで、サイトマップの項目を自由に定義できます。ただし、次の項目は必須項目であり、必ず含めなければなりません。

  • path
  • title

id(ページID) の設定規則

id(ページID)には、任意の文字列を設定できます。ただし、必ずユニークになるように命名してください。また、ツリー構造の頂点となるトップページのidは、必ず空白文字列にするようにしてください。
id(ページID)は、省略することができます。省略した場合、path(ページのパス)の値に基づいた文字列を自動的に生成します。

logical_path(論理構造上のパス)の設定方法

logical_path(論理構造上のパス)は、パンくずの配列を生成するために参照されます。
値は、「トップページと自分自身を除く階層のid(またはpath)を ">" 記号で区切って列記する」形式で指定します。

例えば、「トップページ(id=空白,path="/") > ページA(id="a",path="/a/") > ページB(id="b",path="/b/") > ページC(id="c",path="/c/")」という階層構造を持たせたい場合、ページCには、「a>b」や、「/a/>/b/」のように設定します。

従って、logical_path に何も設定しない場合、トップページの直下に置かれていると解釈されます。

ダイナミックパス機能

サイトマップのpathに変数を埋め込むことで、動的なコンテンツを作成することができます。例を示します。

*path *content *id *title
/test/dynamic/{$a}/{$b}.html/test/dynamic/a/b.htmltest.dynamicダイナミックパスのサンプル

この例では、pathの値に含まれる{$a}{$b}の部分が変数として認識される。変数の部分には任意の値を受け取ることができます。

また、次の例のように、{*a}を使うこともできます。

*path *content *id *title
/test/wildcard/{*a}/test/wildcard/a/index.htmltest.wildcardワイルドカードのサンプル

{$xxx}([a-zA-Z0-9\-\_]+) に、{*xxx}(.*?) にマッチします。

実際に渡された変数の値は、次のメソッドから取得できます。

  • {$a}を取得する ⇒ $px->req()->get_path_param('a')
  • {$b}を取得する ⇒ $px->req()->get_path_param('b')
  • {$}を取得する ⇒ $px->req()->get_path_param('')
  • {*a}を取得する ⇒ $px->req()->get_path_param('a')
  • {*}を取得する ⇒ $px->req()->get_path_param('')

ナビゲーション上に配置されるリンクでは、変数のキーとして設定した文字列がデフォルトの値として採用される。path値を /test/dynamic/{$a}/{$b}.html とした場合には、/test/dynamic/a/b.html がデフォルトのパスとなります。ただし、無名の変数 {$}, {*} にはデフォルトの値は与えられません。

エイリアス機能

ページを、別のページのエイリアスとして登録することができます。

同じコンテンツであるが、ナビゲーション上別のカテゴリにも属す必要がある場合や、インデックスページを伴わないカテゴリがある場合などに使用することが想定されます。

例を示します。

*path *content *id *title
alias:/test/alias/_alias1エイリアス元A
/test/alias//test/alias/エイリアス機能のテスト
alias:/test/alias/エイリアス元B

pathの値の先頭に alias: を付加した行は、エイリアスとして認識されます。エイリアスにはコンテンツが存在しません。この例では、2行目のページが実体を持った通常のページで、1行目と3行目がエイリアスとなり、2行目を参照しています。

<前へ | 次へ>

次期バージョン Pickles 2 を公開しました。もっと詳しく