統一的なパンくず規格 xoops_breadcrumbs の提案
Date 2007-03-01 04:21:58 | Category: XOOPS
|
パンくずリスト: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>
実際に試してみれば、これこそが本当のパンくずである、とお判りいただけるはずです。
D3モジュールであるpicoとbulletin2では対応しましたが、現状では、xoops_breadcrumbsのないモジュールの方が圧倒的に多いので、未対応モジュールでも、それなりのパンくずが表示されるよう、xugj_assign.php というものを作ってみました。
(続く)
|
|