というわけで、D3モジュール仕様のブロックの最後の処理部分をこうすることにしました。
if( empty( $options['disable_renderer'] ) ) {
require_once XOOPS_ROOT_PATH.'/class/template.php' ;
$tpl =& new XoopsTpl() ;
$tpl->assign( 'block' , $block ) ;
$ret['content'] = $tpl->fetch( $this_template ) ;
return $ret ;
} else {
return $block ;
}
<?php
function smarty_function_xugj_block( $params , &$smarty )
{
$assign_name = @$params['item'] . @$params['assign'] ;
$block_file = XOOPS_ROOT_PATH . '/' . @$params['file'] ;
if( file_exists( $block_file ) ) {
include_once $block_file ;
if( function_exists( @$params['func'] ) ) {
$options = empty( $params['opt'] ) ? explode( '|' , @$params['options'] ) : explode( ',' , @$params['opt'] ) ;
if( empty( $assign_name ) ) {
$block = call_user_func( $params['func'] , $options ) ;
if( empty( $block['content'] ) ) {
var_dump( array_keys( $block ) ) ;
echo 'missing "item" in <{xugj_block}>' ;
} else {
echo $block['content'] ;
}
$block['content'] ;
} else {
$options['disable_renderer'] = true ;
$block = call_user_func( $params['func'] , $options ) ;
$smarty->assign( $assign_name , $block ) ;
}
} else {
echo 'invalid "func" in <{xugj_block}>' ;
return ;
}
} else {
echo 'invalid "file" in <{xugj_block}>' ;
return ;
}
}
?>
Tom_G3X wrotes:
Quote:実際には、メニューブロックやユーザーブロックでの利用が大半のようですので、後から言語ファイルの読み込みを追加したんですよ。今読むと、言語を読み込む部分をまるまるハツっちゃってますね
現実には、アサインする部分に言語が必要なケースはほとんどないので、必要な場合だけ、<{xugj_block}>の直前に<{include_php}>してもらえばいいかな、という方針で。
GIJOE wrotes:
xugj_block の読み方は「んぐじぇ・ぶろっく」で
今読むと、言語を読み込む部分をまるまるハツっちゃってますね
現実には、アサインする部分に言語が必要なケースはほとんどないので、必要な場合だけ、<{xugj_block}>の直前に<{include_php}>してもらえばいいかな、という方針で。
Quote:プレースホルダーですか?(実は全然判ってない)legacy2.1 では、xoops_explaceholder を使いこなすと、テーマ職人五段って噂もチラホラ。(笑)
いわゆるプレースホルダーだったら、入門したばかり(10級くらい?)の人にも使えるくらい簡単じゃないといけない気もしますが
Tom_G3X wrotes:
xoops_blockの原石を磨くと、xugj_blockになるって言うのか・・・、
legacy2.1 では、xoops_explaceholder を使いこなすと、テーマ職人五段って噂もチラホラ。(笑)