たとえば、$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['' .
else
{
$t =explode('.', $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]); 以上、ecshopテンプレート内で定数を参照可能にする実装方法をecshopテンプレートの内容も含めて紹介しましたので、PHPチュートリアルに興味のある友人の参考になれば幸いです。