統一的なパンくず規格 xoops_breadcrumbs の提案

Date 2007-03-01 04:21:58 | Category: XOOPS

in englishin japanese
パンくずリスト: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"}>
		&nbsp;>&nbsp;
		<{if $item.url}>
			<a href="<{$item.url}>"><{$item.name}></a>
		<{else}>
			<{$item.name}>
		<{/if}>
	<{/foreach}>
</div>

実際に試してみれば、これこそが本当のパンくずである、とお判りいただけるはずです。

D3モジュールであるpicoとbulletin2では対応しましたが、現状では、xoops_breadcrumbsのないモジュールの方が圧倒的に多いので、未対応モジュールでも、それなりのパンくずが表示されるよう、xugj_assign.php というものを作ってみました。

(続く)




You can read more news at PEAK XOOPS.
http://xoops.peak.ne.jp

The URL for this story is:
http://xoops.peak.ne.jp/md/news/index.php?page=article&storyid=404