繁体   English   中英

为什么我不能在prestashop 1.7的主主题中嵌入模板?

[英]why I can't embed my template in the main theme in prestashop 1.7?

我正在尝试遵循prestashop的官方指南,但面临2个问题:

  1. 我将display.tpl视为原始文本,而不嵌入主主题中。
  2. 我看不到存储在变量“ my_module_message”中的消息

g2a.php(主模块文件)

public function hookDisplayLeftColumn($param)
{
    $this->context->smarty->assign(
        array(
            'my_module_name' => configuration::get('G2A_NAME'),
            'my_module_link' => $this->context->link->getModuleLink('g2a','display'),
            'my_module_message' => $this->l('This is a simple text message')));

    return $this->display(__FILE__ , 'g2a.tpl');
}

控制器/前/display.php

class g2adisplayModuleFrontController 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:g2a/views/templates/front/display.tpl');
  }
}

视图/模板/前/display.tpl

    {extends file=$layout}

{block name='content'}
  welcome to my shop!
  {$my_module_message}
{/block}

第一个:my_module_message变量传递给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');
    }
}

顺便说一句,最好根据驼峰式约定的规则来命名您的类。

第二个:要将代码嵌入到页面中,您必须对其进行扩展并覆盖或填充所需的部分。 例如,如果您希望代码成为页面的主要内容,则需要在display.tpl进行下一步display.tpl

{extends file=$layout}

{block name='content'}
  welcome to my shop!
{/block}

代码中的所有内容都是正确的,但是因为我在管理面板中禁用了缓存,所以我认为这不是缓存问题。

管理员 > 配置 > 高级参数 > 性能 > Smarty > 模板编译 > 如果文件已更新,则重新编译模板

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM