パンくずリスト

多少の設定を要するが、リストを作るためのアイデアが浮かんだので、手順をまとめてみる。

前提条件

カテゴリーごとにディレクトリで分けられていること
index.html            // トップページ
	- categoryA       // カテゴリーA(ディレクトリ)
		- index.html
		- hoge.html
	- categoryB       // カテゴリーB(ディレクトリ)
		- index.html

手順

カテゴリーごとに設定用のダミーHTMLを作る
index.html            // トップページ
	- categoryA       // カテゴリーA(ディレクトリ)
		- 0.html	  // 設定用のダミーHTML
		- 0.mayaa	  // このファイルでカテゴリーの名前とかいろいろ設定する
		- index.html
		- hoge.html
	- categoryB       // カテゴリーB(ディレクトリ)
		- 0.html
		- 0.mayaa
		- index.html

なぜ0.htmlという名前なのかというと、ディレクトリ内で1番最初にページをビルドされるようになるから。
もしもz.htmlという名前だと、abc.htmlがあったときに、abc.htmlが最初に読まれるため、カテゴリーの設定がされないままabc.htmlのビルドをしてしまうから。

0.mayaaでカテゴリーの設定をする
<?xml version="1.0" encoding="UTF-8"?>
<m:mayaa xmlns:m="http://mayaa.seasar.org">
	<m:beforeRender><![CDATA[
		application.category = "<a href=\"カテゴリーへのパス\">カテゴリーの名前</a>";
	]]></m:beforeRender>
</m:mayaa>
パンくずリストを埋め込む

レイアウトに埋め込むのを想定してます。

<m:with m:xpath="ほにゃらら" replace="false" >
	<m:exec
		script="${ 
			if (request.getPageName() != '/index') { /* トップページには表示しない */
				page.breadcrumbs = "<a href=\"/\">ホーム</a>";
				if (application.category != undefined &amp;&amp; 処理中のファイルがindex.htmlでない) {
					page.breadcrumbs += ' > ' + application.category;
				}
				page.breadcrumbs += ' > ' + 処理中ページのタイトル;
			} 
		}" />
	<m:write value="${page.breadcrumbs}" escapeXml="false" />
</m:with>
多段の階層のカテゴリーを実現するためには

application.categoryを配列にして、URLのスラッシュの数に応じて階層をわけるようにすれば良いはず。出力するときは、ループで廻したり。

まとめ

思いつきで書いたので、上手にまとまっていませんし、上述したことをきちんと実証したわけでもありません。
わかり難かったらすみません。