如何覆盖 prestashop 1.7.1.1 中的 tpl 模块

how to override tpl module in prestashop 1.7.1.1

我试图覆盖 ps_categorytree 模块的 tpl,但没有成功 我试图像这样将文件置于覆盖之下:

override/themes/laber_ethan_home5/modules/ps_categorytree/views/templates/hook/ps_categorytree.tpl

-我正在使用 prestashop 1.7.1.1,我买了一个主题。

请帮忙!

您不需要将它放在覆盖文件夹中,只需使用活动主题中的模块文件夹即可。放置 tpl 文件的正确方法是:

/themes/laber_ethan_home5/modules/ps_categorytree/views/templates/hook/ps_categorytree.tpl

希望对你有帮助,再见

我想将我的模块中的 tpl 添加到主题中,这样我的 tpl 版本将覆盖 Prestashop,但我发现所有人都说要在包含主题名称但主题名称可以更改的模块中创建相同的目录结构很容易所以以不同的方式做到了

在我的案例中,文件已包含在内 表单路径

classes\pdf\HTMLTemplate.php

所以我从我的模块中覆盖它

modules\module_name\override\classes\pdf\HTMLTemplate.php

并覆盖方法

protected function getTemplate($template_name) {
    $template = false;
    $default_template = rtrim(_PS_PDF_DIR_, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $template_name . '.tpl';
    $overridden_template = _PS_ALL_THEMES_DIR_ . $this->shop->getTheme() . DIRECTORY_SEPARATOR . 'pdf' . DIRECTORY_SEPARATOR . $template_name . '.tpl';
    $module_template = _PS_MODULE_DIR_ . $template_name;
    if (file_exists($module_template)) {
        $template = $module_template;
    } else if (file_exists($overridden_template)) {
        $template = $overridden_template;
    } elseif (file_exists($default_template)) {
        $template = $default_template;
    }
    return $template;
}

$module_template = _PS_MODULE_DIR_ . $template_name;

同样,你也可以做到。