我正在修改OpenCart 3的主题模板。由于模板缓存,我每次都需要清除“storage/cache”目录下的缓存。在开发过程中频繁地进行工作和预览更改时,这非常令人困扰。请提供一些解决方案,我们如何根据生产和开发环境配置缓存。
注意:我已经在网上搜索过解决方案,但是没有与模板缓存相关的解决方案。虽然有一些可以禁用图像缓存的解决方案,但“图像缓存”和“模板缓存”是Opencart提供的不同功能。
我正在修改OpenCart 3的主题模板。由于模板缓存,我每次都需要清除“storage/cache”目录下的缓存。在开发过程中频繁地进行工作和预览更改时,这非常令人困扰。请提供一些解决方案,我们如何根据生产和开发环境配置缓存。
注意:我已经在网上搜索过解决方案,但是没有与模板缓存相关的解决方案。虽然有一些可以禁用图像缓存的解决方案,但“图像缓存”和“模板缓存”是Opencart提供的不同功能。
public function load($key)
{
if (file_exists($key)) {
@include_once $key;
}
}
像下面的代码一样注释掉:
public function load($key)
{
// if (file_exists($key)) {
// @include_once $key;
// }
}
一旦开发完成,您需要删除注释,这将清除twig模板缓存并重新创建。
Opencart版本3.0.2.0 我遇到了同样的问题,尝试在主题编辑器或实际的原始twig文件中工作,经过一两个小时的尝试,它奏效了。
删除主题编辑器中的更改并返回编辑实际的twig文件。 我的截图
最初的回答如果您有权限,您也可以直接从代码中进行此操作。通过ftp或cPanel转到下面的文件路径:
system\library\template\Twig\Environment.php
寻找
$this->debug = (bool) $options['debug'];
替换:
$this->debug = (bool) true;
我想你之前在路径为设计->主题编辑器中编辑了模板。
清空您的数据库中oc_theme数据表中的所有数据。
Scott的回答是最好的,但如果由于版本原因不可用或者你想在程序中禁用它,你可以在twig渲染之前的任何地方执行以下操作:
$this->config->set('template_cache', false);
$this->config
可以从任何控制器、模型和大多数库类中调用。对于控制器和模型,使用魔术方法 __get()
返回 $this->registry->get('config')
。OP 在这里询问有关模板的问题,因此可以推断他们正在某个控制器内进行更改。 - But those new buttons though..这与Scott的答案类似,但仅限于数据库/后端。如果您无法依赖UI并且只能访问DB(就像我一样,我正在搞砸UI),则在设置表中搜索“developer_theme”key
并将其设置为false或0。
UPDATE `oc_setting` SET `value` = '0' WHERE `oc_setting`.`key` = 'developer_theme';