ブロック関数プラグイン

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

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

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

例 18.5. ブロック関数プラグイン


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

     

registerPlugin() および unregisterPlugin() も参照ください。