PS文档说,在开发模块时,您可以创建/themes/[theme_name]/modules
子文件夹,并将其用于:
"如有必要,覆盖.tpl文件和语言文件的子文件夹。"
并且它:
"使您能够以各种方式处理模块的模板文件,取决于当前主题。" ,
但我真的不了解它的实际用法。它的用例是什么?
由于
答案 0 :(得分:2)
开发Prestashop网站时,不应更改核心文件。这意味着您只能在/modules/
文件夹中创建新模块,但不能更改现有模块。因为如果您更新了您更改的模块,则所有更改都将消失。
每次Prestashop需要加载模块模板文件时,如果存在该模板的覆盖,它将首先查看当前主题/themes/your_theme/modules/the_module/path_to_tpl.tpl
。如果没有,它将从/modules
目录加载模板。
此推荐也适用于.css
和.js
个文件。
documentation you mentioned in the comment below错误,应该更新。您无法在模块中放置themes
文件夹。
以下是每次我们需要模块模板时调用_isTemplateOverloadedStatic()
类的Module
方法:
/*
** Template management (display, overload, cache)
*/
protected static function _isTemplateOverloadedStatic($module_name, $template)
{
if (Tools::file_exists_cache(_PS_THEME_DIR_.'modules/'.$module_name.'/'.$template)) {
return _PS_THEME_DIR_.'modules/'.$module_name.'/'.$template;
} elseif (Tools::file_exists_cache(_PS_THEME_DIR_.'modules/'.$module_name.'/views/templates/hook/'.$template)) {
return _PS_THEME_DIR_.'modules/'.$module_name.'/views/templates/hook/'.$template;
} elseif (Tools::file_exists_cache(_PS_THEME_DIR_.'modules/'.$module_name.'/views/templates/front/'.$template)) {
return _PS_THEME_DIR_.'modules/'.$module_name.'/views/templates/front/'.$template;
} elseif (Tools::file_exists_cache(_PS_MODULE_DIR_.$module_name.'/views/templates/hook/'.$template)) {
return false;
} elseif (Tools::file_exists_cache(_PS_MODULE_DIR_.$module_name.'/views/templates/front/'.$template)) {
return false;
} elseif (Tools::file_exists_cache(_PS_MODULE_DIR_.$module_name.'/'.$template)) {
return false;
}
return null;
}
正如您在此代码中所看到的,Prestashop在加载模板时绝不会查看模块内的themes
文件夹。