簡體   English   中英

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

[英]OpenCart 3.x - including a new template file

我需要將一個新的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文件,那就太棒了。

你可以:

  • 在@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文檔

我還沒有學習OpenCart 3.x,但我想你需要改變

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

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

catalog/controller/common/header.php

要通過{{header_home}}構造連接另一個模板,需要在文件夾/controller/common/directory中創建header_home.php,在主題/*theme_name*/template/common/創建header_home.twig文件/*theme_name*/template/common/文件夾和控制器,它負責頁面的形成,例如在目錄/controller/common/home.php

添加一行:

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

之前:

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

@bogalakon的答案是正確的,但是如果你更新你的OpenCart核心文件你會丟失你的更改所以,我建議你復制header.php控制器文件並將其重命名為header_home.php然后編輯文件並替換該行

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

有:

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

有幾種方法可以提供不同的價值。

例如:

考慮控制器

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

要添加自己的自定義twig文件並將其包含在另一個現有文件中,您需要做三件事:

  1. 創建實際的自定義twig文件。 在您的情況下,它將是: catalog/view/theme/customtheme/template/common/header_home.twig
  2. 為該twig文件創建一個控制器。 在您的情況下,您可以復制: /catalog/controller/common/header.php並將其重命名為header_home.php 編輯此控制器並通常在第2行將類名更改為ControllerCommonHeaderHome
  3. 最后,因為你要在home.twig包含header_home ,編輯/catalog/controller/common/home.php並添加行$data['header'] = $this->load->controller('common/header_home'); $data['header'] = $this->load->controller('common/header');

而已。 完成上述步驟后,您現在可以在home.twig包含{{ header_home }} 如果您直接編輯文件,我發現有時我需要登錄網站的管理員,轉到設計>主題編輯器,打開我添加或更改的文件,點擊重置,然后保存。 刷新您的網站,您應該看到更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM