たとえば、$smarty.const.'constant' は使用できません。
実際、テンプレート エンジンは原理的には複雑ではなく、一部のテンプレート タグを PHP の関数、変数、および文法構造に置き換えるだけです。
今回、ecshop テンプレートに参照定数の関数を追加するには、関数 make_var() に 2 行のコードを追加するだけです
コードをコピーしますコードは次のとおりです:
function make_var($val)
{
if (strrpos($val, '.') === false)
{
if (isset( $this->_var[$val]) && isset($this->_patchstack[$val]))
{
$val = $this->_patchstack[$val] ];
}
$p = '$this->_var['' . $val . '']';
else
{
$t = 爆発('.', $val);
$_var_name = array_shift($t);
if (isset($this->_var[$_var_name]) && isset($this->_patchstack[$]) _var_name]))
{
$_var_name = $this->_patchstack[$_var_name]
}
if ($_var_name == 'スマート')
{
if ($t[0 ] == 'const'){
return strtoupper($t[1])
}
$p = $this->compile_smarty_ref($t); }
else
{
$p = '$this->_var['' . $_var_name . '']';
}
foreach ($t AS $val)
{
$p.= '['' . '']'
}
}
21-23 行が新たに追加され、テンプレート ファイルの {$smarty.const.const} を通じて PHP で定義された定数を参照できるようになります
コードは次のとおりです。 21 if($t[0] == 'const'){ 22 return strtoupper($t[1]); >23 }