在 OpenCart 3 中禁用用于开发的模板缓存

Disable template caching for development in OpenCart 3

我正在更改 OpenCart 3 中的主题模板。由于模板缓存,我每次都必须在 "storage/cache" 目录下清除缓存。在开发过程中频繁工作和预览更改时非常烦人。请提供一些解决方案,我们如何根据生产和开发环境配置缓存。

注意:我已经在网上搜索了解决方案,但没有找到与模板缓存相关的解决方案。解决方案可用于禁用图像缓存,但 "Image Caching" 和 "Template Caching" 是 Opencart 中提供的不同功能。

您可能需要升级到更新版本的 OpenCart3 - 第一个版本 (3.0.0.0) 无法在 GUI 中执行此操作。

较新的版本,例如 3.0.2.0,在管理面板上有一个齿轮。单击齿轮,您将获得禁用缓存的选项。

我想你之前编辑模板的路径是:Design->Theme Editor。

清除数据库 oc_theme 数据 table 中的所有日期。

如果您有权访问,也可以直接从 CODE 执行此操作。通过 ftp 或 cPanel 转到下面的文件路径:

system\library\template\Twig\Environment.php

查找

$this->debug = (bool) $options['debug'];

替换:

$this->debug = (bool) true;

Scott 的回答是最好的,但如果由于版本原因它不可用,或者您想以编程方式禁用它,您可以在渲染树枝之前的任何地方执行此操作:

$this->config->set('template_cache', false);

Opencart 版本 3.0.2.0 我遇到了同样的问题,尝试在主题编辑器或实际的原始树枝文件中工作,一两个小时后我尝试了它。

删除主题编辑器中的更改并重新编辑实际的 twig 文件 my screen shot

另一种方法: 打开system\library\template\Twig\Cache\Filesystem.php,找到下面几行代码

public function load($key)
{
    if (file_exists($key)) {
        @include_once $key;
    }
}

注释掉如下代码:

public function load($key)
{
    // if (file_exists($key)) {
    //      @include_once $key;
    // }
}

这将 remove the template cache 树枝并每次重新创建,一旦开发结束,您必须删除评论。

在 OC 3.0.3.6 中,如果您有一些 twig 扩展,例如 twig 管理器,在进行更改后,您应该 select 在右上角的修改和刷新按钮中扩展该扩展。

P.S。一整天都在找这个,希望它能帮助别人

这与 Scott 的回答类似,但仅在 database/backend 上。如果你不能依赖 UI 并且只能访问数据库(像我一样,我搞砸了 UI),它在设置 table 上搜索 'developer_theme' key 并将其设置为 false 或 0.

UPDATE `oc_setting` SET `value` = '0' WHERE `oc_setting`.`key` = 'developer_theme';