PEAK XOOPS - D3モジュールとブロックテンプレート in englishin japanese

Archive | RSS |
XOOPS
XOOPS : D3モジュールとブロックテンプレート
Poster : GIJOE on 2006-10-03 03:19:46 (7588 reads)

in englishin japanese
wrapsではそもそも存在しなかったので、「ブロック」をどうするかは問題として先送りしてました。その間リリースされたbulletin2を見たら、なるほどブロックテンプレートも忠実に再現してます。onInstallで、ブロックテンプレートのインストールと共に、ブロックテンプレートの関連づけを行っています。

XOOPS標準、という点では、このやり方が優れているでしょう。

でも、そもそもブロックテンプレートとはなんでしょう?
メインテンプレートと分ける必要がどこにあるのでしょう? (雛形ファイルとしてわざわざ階層を分けておきながら、実際にはフラットなDBテンプレートです)
newblocksテーブルに直接書き込んでしまったら、2.2.x系との互換性も失われるのでは?

いろいろ悩んだ末、私のD3モジュールにおけるブロックには、メインテンプレートを使うことにしました。今まで通り、配列 $block にアサイン変数を割り当ててきたのであれば、そのブロックのshow関数の最後に、この4行を追加するだけです。


	$tpl =& new XoopsTpl() ;
	$tpl->assign( 'block' , $block ) ;
	$ret['content'] = $tpl->fetch( 'db:'.$mydirname.'_block_(template_name).html' ) ;
	return $ret ;


実は、このやり方には大きなメリットがあります。それは、ブロックオプションで動的にテンプレートを切り替えられる、ということです。

従来は、複製可能ブロックでも、テンプレートは同一のものを使うしかなかったのですが、このやり方であれば、最後のfetch()に渡す引数を変えるだけで、複製された各ブロックに、任意のテンプレートを割り当てることが可能です。

DBテンプレートではなく、ファイルテンプレートを割り当てたって良いのです。

唯一、デメリットらしいものがあるとすれば、cache/ の下から、該当するブロックのキャッシュファイルを見つけづらいことぐらいでしょうか(dummyテンプレートとして扱われるため)。

ブロック管理からブロックテンプレート編集画面に移動するためのリンクがなくなる、なんてのもデメリットとしてはありますが、それは、blocksadminパートで解決可能です。

逆に、あえてブロックテンプレートを使う理由は、他に見当たりません。なんで今までこの方法が思いつかなかったのか、自分でも不思議なくらいです。

0 comments

Related articles
Printer friendly page Send this story to a friend

Comments list

Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!