1

有没有其他人遇到过这个问题?

我无法修改这种类型的文件:{% include 'mobshop/template/common/icons/wishlist.twig' %}

文件“wishlist.twig”在日志中被修改,但更改不会实时显示。

你有什么建议吗?

4

1 回答 1

0

简短回答:您不能使用通过include树枝模板内的方法添加的 OCMod 树枝文件进行修改。

twig include 是如何工作的?

include是 twig 方法,它允许您将部分添加到您的主题中,这是一个很酷的功能。当 twig 引擎运行时,它通过跟随链接并将 html 部分添加到最终的 html 输出字符串中来编译模板。

强迫症如何运作?

OCmod 基本上是一个函数,它接收文件的路径(在我们的例子中是 twig 模板文件路径),在解析字符串后修改它并保存到 OCMod 缓存中。

然后,当 OpenCart 请求该文件时,OCMod 引擎会尝试首先返回缓存的文件,如果不可用,则返回原始文件。

所以包装在方法中的所有文件modification('')都有这种支持。

OCMod不支持twig include的原因

从上面的逻辑我们可以看到,OCModmodification方法根本就不会从该Include方法中看到 twig 部分文件路径。它超出了它的范围。

modification方法只看到一个字符串{% include 'path-to-partial-file' %},就是这样。它永远不会潜入该路径,也永远不会尝试从该文件中创建 OCMod 缓存。

结论。

您根本不应该在主题中使用“包含”。它在 OpenCart 主题中只是不好的做法。虽然我个人喜欢 Twig 的这个功能,但我也被迫避免使用它。

在 OpenCart 中添加部分的唯一方法是通过控制器 ($this->load->controller('...')) 将其附加到 $data 字段,然后在模板中显示它。

如果您仍然必须拥有此功能

PHP Twig 引擎是一个强大的工具,您可以根据需要对其进行扩展。您仍然可以添加可以使该include方法与 OCmod 一起使用的扩展,尽管我从未添加过该功能。

这是一个树枝扩展https://github.com/Dreamvention/2_d_twig_manager/blob/master/system/library/template/Twig/Extension/DTwigManager.php,您可以将其用作示例并根据您的需要进行修改。

享受!

于 2021-11-14T15:54:33.040 回答