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 }}

我想我在添加新模板文件时不知何故错过了一步?如果有人可以帮助我添加一个新的树枝文件,那就太好了。

4

6 回答 6

6

您可以:

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

IE:

{{ 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 文档

于 2017-09-14T08:32:16.993 回答
3

我还没学过 OpenCart 3.x,但我猜你需要改变

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

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

catalog/controller/common/header.php.

于 2017-08-07T16:33:48.823 回答
2

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

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

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

于 2019-02-04T06:45:12.623 回答
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)); '
于 2017-11-22T18:15:50.540 回答
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 }}。

于 2018-07-17T11:40:51.163 回答
1

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

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

和:

return $this->load->view('common/header_home', $data);
于 2017-12-13T23:22:32.687 回答