ブロック関数プラグイン

void smarty_block_name (array $params, mixed $content, object &$smarty, boolean &$repeat)

ブロック関数は、{func} .. {/func} 形式の関数です。 この関数によって囲まれたテンプレートのブロックの内容を処理します。 ブロック関数は、同じ名前の カスタム関数 より優先されます。つまり、テンプレート関数 {func} とブロック関数 {func}..{/func} の両方を定義することはできません。

ネストしたブロック関数がある場合、変数 $smarty->_tag_stack にアクセスする事で親のブロック関数を見つける事が可能です。 var_dump() を行い、構造をはっきりと理解すべきべきです。

例 16-5. ブロック関数プラグイン

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     block.translate.php
 * Type:     block
 * Name:     translate
 * Purpose:  テキストブロックを翻訳する
 * -------------------------------------------------------------
 */
function smarty_block_translate($params$content, &$smarty, &$repeat)
{
    
// 終了タグでのみ出力します
    
if(!$repeat){
        if (isset(
$content)) {
            
$lang $params['lang'];
            
// ここで $content に対する翻訳を行います
            
return $translation;
        }
    }
}
?>

register_block() および unregister_block() も参照してください。