how to override tpl module in prestashop 1.7.1.1

5.5k Views Asked by At

im trying to override the tpl of ps_categorytree module, but it didn't work i tried to put the file under override like this:

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

-im using prestashop 1.7.1.1 and i bought a theme.

Help please!

2

There are 2 best solutions below

2
On BEST ANSWER

you don't need to put this in override folder, simply use the modules folder that is in the active theme. The correct way to put your tpl file is:

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

Hope it helps you, bye.

0
On

I wanted to add tpl from my module to theme so that my version of tpl will override the Prestashop but I found all stating that to create the same directory structure in the module that consists of theme name but theme name can change easily so did it in a different way

in my case, the file was included form path

classes\pdf\HTMLTemplate.php

so I override it from my module

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

and override method

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;
}

See

$module_template = _PS_MODULE_DIR_ . $template_name;

similarly, you can do it.