Php 为什么我能';是否将我的模板嵌入prestashop 1.7中的主主题?
我试图遵循prestashop的官方指南,但我面临两个问题:Php 为什么我能';是否将我的模板嵌入prestashop 1.7中的主主题?,php,module,prestashop,smarty,Php,Module,Prestashop,Smarty,我试图遵循prestashop的官方指南,但我面临两个问题: 我将display.tpl视为原始文本,而不是嵌入主主题中 我看不到存储在变量“my_module_message”中的消息 g2a.php(主模块文件) controllers/front/display.php 视图/模板/front/display.tpl 第一个: 将mymodule\u消息变量传递给mymodule.tpl模板,但不传递给先前呈现的display.tpl。因此,在设置模板之前,需要从控制器类传递该变量。你也可
第一个: 将
mymodule\u消息
变量传递给mymodule.tpl
模板,但不传递给先前呈现的display.tpl
。因此,在设置模板之前,需要从控制器类传递该变量。你也可以用同样的方法
class mymoduleDisplayModuleFrontController extends ModuleFrontController
{
public function initContent()
{
parent::initContent();
$this->context->smarty->assign('my_module_message', $this->l('This is a simple text message'));
$this->setTemplate('module:mymodule/views/templates/front/display.tpl');
}
}
顺便说一句,最好根据camelcase约定规则命名类
第二个:
要将代码嵌入到页面中,您必须对其进行扩展,并覆盖或填充所需的部分。例如,如果希望代码成为页面的主要内容,则需要在display.tpl中执行下一步操作
{extends file=$layout}
{block name='content'}
welcome to my shop!
{/block}
代码中的所有内容都是正确的,但是因为我在管理面板中禁用了缓存,所以我认为这不是缓存问题
管理配置高级参数性能模板编译>如果文件已更新,请重新编译模板
我又检查了一遍,一切正常。当你把这个链接放到你的浏览器your_domain/index.php时,你会得到什么?fc=module&module=mymodule&controller=display?我刚刚修改了主要问题中的代码,以便文件名和类名更加清晰。你提到的url给了我这样一条消息“你正在寻找的页面没有找到”。这也是我尝试测试代码时在浏览器中显示的链接。"". 它总是给我一个空行页面,里面有文本,没有变量“my_module_message”。另外,我试图显示{$layout},但它没有给我任何东西。没关系,在您前面提到的更改之后,它也适用于我。你用什么主题?如果要打印变量$layout,必须在{block name='content'}中进行。您是否有可能为视图/templates/front/display.tpl创建一个覆盖文件?如果正确,代码是正确的。但这是一个缓存问题。请检查下面的答案。
{extends file=$layout}
{block name='content'}
welcome to my shop!
{$my_module_message}
{/block}
class mymoduleDisplayModuleFrontController extends ModuleFrontController
{
public function initContent()
{
parent::initContent();
$this->context->smarty->assign('my_module_message', $this->l('This is a simple text message'));
$this->setTemplate('module:mymodule/views/templates/front/display.tpl');
}
}
{extends file=$layout}
{block name='content'}
welcome to my shop!
{/block}