その後、情報として書き残しておきます
現時点でわかったこと
$this->default_modifiers = array('domi_easiestml');
default_modifiers の指定を使う方法場合の別の副作用ありました、
これに引っかかると面倒
症状:
最初は、Xoopsのsmartyデバグがエラーで表示されなかっただけなので後回しでしたが
smaryのdebug.tplを調べた結果
テンプレートの記述のうち
致命的な影響でるものがあることがわかりました
(現時点は、smartyデバグテンプレートしか影響はでてないけど)
テンプレートの記述でissetを使っているところがエラーになります(現在smarty2.6.9)
例
{if isset($_smarty_debug_output) 以下略
のような指定を指定いるところでは
Quote:
Parse error: parse error, unexpected '(', expecting T_VARIABLE or '$' in /home/XXXXXX/xo/templates_c/%%XX^XXX^XXXXXXXXXXXX%%debug.tpl.php on line 10
となります。
回避策としては、issetを使っている箇所に
{if isset($_smarty_debug_output|smarty:nodefaults) 以下略
と |smarty:nodefaults の指定を追加すれば動きます
Xoopsのテンプレートで
マニュアルに無いように思うので
issetを使っているものは、少ないと思いますが
やはり、既存使用しているテンプレートの記述との相性がでるようです
if (isset ( ((is_array($_tmp=$this->_tpl_vars['_smarty_debug_output'])) ? $this->_run_mod_handler('domi_easiestml', true, $_tmp) : smarty_modifier_domi_easiestml($_tmp)) )
影響が出ると思われるのは 、smartyのコンパイルキャシュ
ソースを見ると、smartyテンプレートの記述で
default_modifiers
の関数編集が自動で追加されているけど?
構文として?括弧のつけ方はあっていると思うけど
この場所でこの使い方、出来ないのかな?
んーphp文法エラーかな?smartyのコンパイルが悪いのかな?
ともかく、これが前述のエラーとなってテンプレートが表示できないです
ついでに調べた参考:
smarty security モードでもsmarty関数として、
ifの中で使える初期の関数
'array', 'list','isset', 'empty','count', 'sizeof','in_array', 'is_array',
は、smartyマニュアルに使えるとは書いてないような気がするけど?default_modifiers の指定を使うと全滅する可能性があります