Module 什么是模块&x27;s";主题;文件夹用于什么?

Module 什么是模块&x27;s";主题;文件夹用于什么?,module,prestashop,Module,Prestashop,PS文档说明,在开发模块时,您可以创建/themes/[theme\u name]/modules子文件夹,它用于: 如有必要,用于覆盖.tpl文件和语言文件的子文件夹 它: “允许您以各种方式处理模块的模板文件,取决于当前主题” 但我不太明白它的实际用途。它的用例是什么 谢谢当您开发Prestashop网站时,您不应该更改核心文件。这意味着您只能在/modules/文件夹中创建新模块,而不能更改现有模块。因为如果你更新一个你修改过的模块,你所有的修改都会消失 每次Prestashop需要加载模

PS文档说明,在开发模块时,您可以创建
/themes/[theme\u name]/modules
子文件夹,它用于:

如有必要,用于覆盖.tpl文件和语言文件的子文件夹

它:

“允许您以各种方式处理模块的模板文件,取决于当前主题”

但我不太明白它的实际用途。它的用例是什么


谢谢

当您开发Prestashop网站时,您不应该更改核心文件。这意味着您只能在
/modules/
文件夹中创建新模块,而不能更改现有模块。因为如果你更新一个你修改过的模块,你所有的修改都会消失

每次Prestashop需要加载模块模板文件时,如果存在对该模板的覆盖,它将首先查看当前主题
/themes/your_theme/modules/the_module/path_to_tpl.tpl
。如果没有,它将从
/modules
目录加载模板

此建议也适用于
.css
.js
文件


错误,应该更新。您不能将
主题
文件夹放在模块内

下面是来自
模块
类的
\u isTemplateOverloadedStatic()
方法,称为“每当我们需要模块模板时”:

/*
**模板管理(显示、重载、缓存)
*/
受保护的静态函数\u istemplate重载静态($module\u name,$template)
{
if(Tools::file_exists_cache(_PS_THEME_DIR_'modules/'.$module_name./'.$template)){
返回_PS_THEME_DIR_.modules/'.$module_name./'.$template;
}elseif(Tools::file_exists_cache(_PS_THEME_DIR_'modules/'.$module_name.'/views/templates/hook/'.$template)){
返回_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)){
返回_PS_THEME_DIR_'modules/'.$module_name./views/templates/front/'.$template;
}elseif(工具::文件\u存在\u缓存(\u PS\u MODULE\u DIR.$MODULE\u name.'/views/templates/hook/'.$template)){
返回false;
}elseif(工具::文件\u存在\u缓存(\u PS\u MODULE\u DIR.$MODULE\u name.'/views/templates/front/'.$template)){
返回false;
}elseif(工具::文件\u存在\u缓存(\u PS\u模块\u目录.$MODULE\u名称.'/'.$template)){
返回false;
}
返回null;
}

正如您在这段代码中所看到的,加载模板时,Prestashop将永远不会查看模块内的
themes
文件夹。

我不理解这种行为,但我指的是模块根文件夹中的子文件夹:
/modules/mymodule/themes/[theme\u name]/modules
,如PS文档中所述:。也许我误读了这些信息?这是文档中的一个错误,我会相应地更新我的答案。