ブロック関数プラグイン

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

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

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

Example 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() も参照してください。