OpenCart 3.x - 包括一个新的模板文件

时间:2017-08-07 08:41:31

标签: twig opencart opencart-3

我需要将一个新的OpenCart模板文件添加到另一个模板文件中。

基本上我在/theme/customtheme/template/common/创建了一个名为“header_home.twig”的新头文件。

然后在home.twig中,我已将 {{header}} 更改为 {{header_home}} ,但它没有显示任何内容。

基本上,我所做的只是复制 header.twig 并将其重命名为 header_home.twig ,并输入“xxxxx”以查看它是否正在调用新文件但事实并非如此。相反,它没有显示任何内容。

这就是我的home.twig现在的样子:

{{ header_home }}
<div id="common-home" class="container">
  <div class="row">{{ column_left }}
    {% if column_left and column_right %}
    {% set class = 'col-sm-6' %}
    {% elseif column_left or column_right %}
    {% set class = 'col-sm-9' %}
    {% else %}
    {% set class = 'col-sm-12' %}
    {% endif %}
    <div id="content" class="{{ class }}">{{ content_top }}{{ content_bottom }}</div>
    {{ column_right }}</div>
</div>
{{ footer }}

我认为在添加新模板文件时我不知道哪一步?如果有人可以帮我添加一个新的twig文件,那就太棒了。

6 个答案:

答案 0 :(得分:6)

你可以:

  • 在@bogalakon指出的控制器/ common / header中的OpenCart级别更改Twig渲染模板的名称(最好通过ocmod执行此操作,以便将来的OpenCart更新不会覆盖您的hack)。
  • 或在Twig级别包含另一个模板

即:

{{ header }} {# Original rendered to HTML OpenCart header - you can move it to your header_home.twig or just drop it #}
{% include customtheme/template/common/header_home.twig %}
<div id="common-home" class="container">
 ...

Twig 是非常强大的模板语言。而且你可以做的不仅仅是一个简单的包括! OpenCart正式接受它真是太好了。但就目前而言,它只是Twig 1.24.2。请参阅Twig documentation

答案 1 :(得分:2)

我还没有学习OpenCart 3.x,但我想你需要改变

return $this->load->view('common/header', $data);

return $this->load->view('common/header_home', $data);
catalog/controller/common/header.php中的

答案 2 :(得分:2)

要通过{{header_home}}构造连接另一个模板,您需要在文件夹/controller/common/directory中创建header_home.php,在主题/*theme_name*/template/common/文件夹中创建header_home.twig文件并且在控制器中,负责页面的形成,例如在目录/controller/common/home.php

添加一行:

'$ data [' header_home '] = $ this-> load-> controller (' common / header_home '); '

之前:

'$ this-> response-> setOutput ($ this-> load-> view (' common / home ', $ data)); '

答案 3 :(得分:1)

@bogalakon的答案是正确的,但如果您更新OpenCart核心文件,您将丢失更改,因此我建议您复制header.php控制器文件并将其重命名为header_home.php,然后编辑文件并替换

return $this->load->view('common/header', $data);

使用:

return $this->load->view('common/header_home', $data);

答案 4 :(得分:1)

有几种方法可以赋予不同的值。

例如:

考虑控制器

$data['header'] = $this-> load-> controller ('common / header');

模板中提供了变量{{header}}

您可以将新模板放置在另一个文件( header_home.twig )中,然后可以立即下载新模板以供使用:

$data['**header**'] = $this-> load-> controller ('common / ***header_home***');

如果要在模板中使用{{ header }}。

或者,

$data['**header_home**'] = $this-> load-> controller ('common / header_home');

要在模板中使用{{ header_home }}。

答案 5 :(得分:1)

要添加自己的自定义小枝文件并将其包含在另一个现有的小枝文件中,您需要做三件事:

  1. 创建实际的自定义树枝文件。 在您的情况下,它将是: catalog/view/theme/customtheme/template/common/header_home.twig
  2. 为该树枝文件创建一个控制器。就您而言,您可以复制: /catalog/controller/common/header.php并将其重命名为header_home.php。编辑此控制器,然后通常在第2行将类名称更改为ControllerCommonHeaderHome
  3. 最后,由于要在header_home中包含home.twig,因此请编辑/catalog/controller/common/home.php并在$data['header'] = $this->load->controller('common/header_home');之后添加行$data['header'] = $this->load->controller('common/header');

就是这样。完成上述步骤后,现在可以在{{ header_home }}中包含home.twig。如果您直接编辑文件,我发现有时我需要登录网站的管理员,进入设计>主题编辑器,打开我添加或更改的文件,点击重置并保存。刷新您的网站,您应该会看到更改。