パンくずリスト:Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%91%E3%83%B3%E3%81%8F%E3%81%9A%E3%83%AA%E3%82%B9%E3%83%88
今や、ある程度の深さを持ったサイトであれば、「パンくず」を実装することはほぼ必須と言えますが、XOOPSにはそれを統一的に扱う術がなく、サイトデザイナーが独自に実装するか、モジュールが独自に実装したものであきらめるかの2拓しかありませんでした。
というわけで、ここで xoops_breadcrumbs を提唱したいと思います。
各モジュールはxoops_breadcrumbsというテンプレート変数を$xoopsTplにアサインします。
その構造はこうなってます。
変数名: 'xoops_breadcrumbs'
型: 連想配列の配列(連想ではない)
一般的なパターン
[0] => array( 'name' => '(モジュール名)' , 'url' => '(モジュールトップの絶対URL)' ) ,
[1] => array( 'name' => '(トップカテゴリ名)' , 'url' => '(カテゴリ内一覧の絶対URL)' ) ,
[2] => array( 'name' => '(サブカテゴリ名)' , 'url' => '(サブカテゴリ内一覧の絶対URL)' ) ,
[3] => array( 'name' => '(コンテンツ名)' )
'name' のみで 'url' がないのも可。
ここでの重要な点として、'name'にはHTML表示用にエスケープされたものをアサインしてください。XC2.1の生値アサインの原則には反しますが、様々な理由から、ここに生値をアサインするのは難しいからです。
このような形ですべてのモジュールが、xoops_breadcrumbs をアサインすると、テーマ(theme.html)内に以下のように記述することができます。
<div id="theme_breadcrumbs">
<a href="<{$xoops_url}>/">TOP</a>
<{foreach from=$xoops_breadcrumbs item="item"}>
>
<{if $item.url}>
<a href="<{$item.url}>"><{$item.name}></a>
<{else}>
<{$item.name}>
<{/if}>
<{/foreach}>
</div>