Php 为什么我能';是否将我的模板嵌入prestashop 1.7中的主主题?

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。因此,在设置模板之前,需要从控制器类传递该变量。你也可

我试图遵循prestashop的官方指南,但我面临两个问题:

  • 我将display.tpl视为原始文本,而不是嵌入主主题中
  • 我看不到存储在变量“my_module_message”中的消息
  • g2a.php(主模块文件)

    controllers/front/display.php

    视图/模板/front/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}