我正在尝试为Prestashop制作模块。但我的tpl文件无法看到变量。
payicon.php:
function hookFooter($params){
$group_id="{$base_dir}modules/mymodule/payicon.php";
$smarty = new Smarty;
$smarty->assign('group_id', '$group_id');
return $this->display(__FILE__, 'payicon.tpl');
return false;
}
payicon.tpl:
<div id="payicon_block_footer" class="block">
<h4>Welcome!</h4>
<div class="block_content">
<ul>
<li><a href="{$group_id}" title="Click this link">Click me!</a></li>
</ul>
</div>
</div>
更新:
这是安装:
public function install() {
if (!parent::install() OR !$this->registerHook('Footer'))
return false;
return Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'pay_icon` (
`id_icon` int(10) unsigned NOT NULL,
`icon_status` varchar(255) NOT NULL,
`icon_img` varchar(255) DEFAULT NULL,
`icon_link` varchar(255) NOT NULL,
PRIMARY KEY (`id_icon`)
) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;');
return true;
}
答案 0 :(得分:1)
我不知道prestashop,但我可以告诉你有关smarty和PHP的信息。我可以在代码中看到许多明显的问题
<强> 1)强>
$base_dir
在函数中不可用。添加
global $base_dir;
在函数的开头,使其在此函数的范围内可用。
2)
$smarty = new Smarty;
我认为这条线不应该在那里。这是初始化一个新的Smarty
实例,它与函数外部的代码无关
用
global $smarty;
这将使此函数中的全局$smarty
(Smarty
类的实例)可用
第3)强>
$smarty->assign('group_id', '$group_id');
错了。替换为
$smarty->assign('group_id', $group_id);
可能解决方案
由于您的问题没有得到太多关注,我会尝试给出答案,至少让您朝着正确的方向前进(如果没有解决您的问题)
尝试用
替换此功能public function hookFooter($params){
global $base_dir;
global $smarty;
$group_id="{$base_dir}modules/mymodule/payicon.php";
$smarty->assign('group_id', '$group_id');
return $this->display(__FILE__, 'payicon.tpl');
}
更新
我的坏:D。忘了替换最终代码中的'$group_id'
。试试这个
public function hookFooter($params){
global $base_dir;
global $smarty;
$group_id="{$base_dir}modules/mymodule/payicon.php";
$smarty->assign('group_id', $group_id);
return $this->display(__FILE__, 'payicon.tpl');
}