PEAK XOOPS - 統一的なパンくず規格 xoops_breadcrumbs の提案 in englishin japanese

Archive | RSS |
XOOPS
XOOPS : 統一的なパンくず規格 xoops_breadcrumbs の提案
Poster : GIJOE on 2007-03-01 04:21:58 (21459 reads)

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 というものを作ってみました。

(続く)


Related articles
Printer friendly page Send this story to a friend

Comments list

GIJOE  Posted on 2007/3/16 5:24
perhaps yes.

But it does not look so meaningful, because breadcrumbs should be placed in theme.html with its design.

breadcrumbs must be a part of theme instead of logic/core.
gigamaster  Posted on 2007/3/16 4:49 | Last modified
Hi Gijoe,

Could this be done through the Xoops Cube 'preload' mechanism?

Thanks
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!