パンくずリスト
多少の設定を要するが、リストを作るためのアイデアが浮かんだので、手順をまとめてみる。
前提条件
カテゴリーごとにディレクトリで分けられていること
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 && 処理中のファイルがindex.htmlでない) { page.breadcrumbs += ' > ' + application.category; } page.breadcrumbs += ' > ' + 処理中ページのタイトル; } }" /> <m:write value="${page.breadcrumbs}" escapeXml="false" /> </m:with>
多段の階層のカテゴリーを実現するためには
application.categoryを配列にして、URLのスラッシュの数に応じて階層をわけるようにすれば良いはず。出力するときは、ループで廻したり。
まとめ
思いつきで書いたので、上手にまとまっていませんし、上述したことをきちんと実証したわけでもありません。
わかり難かったらすみません。