jgonze Posted July 8, 2011 Share Posted July 8, 2011 hello,I'm developping a new module.My php files load the tpl files using the following syntax which is perfectly working : if (Tools::file_exists_cache(_PS_THEME_DIR_.'modules/mymodule/view.tpl')) $smarty->display(_PS_THEME_DIR_.'modules/mymodule/view.tpl'); elseif (Tools::file_exists_cache(dirname(__FILE__).'/view.tpl')) $smarty->display(dirname(__FILE__).'/view.tpl'); else echo Tools::displayError('No template found'); This part of code check if the php has to use the tpl of the module or the tpl of the theme. Fine!But within my view.tpl, I have the following line (which is working): {include file="$tpl_dir./../../modules/mymodule/view-line.tpl"} But in this case, it is not checking if there is a theme version of my .tpl file.Any idea for making this part of code compatible with a theme version?Many thanks,Jerome Link to comment Share on other sites More sharing options...
jgonze Posted July 9, 2011 Author Share Posted July 9, 2011 Thanks for the reply but it is not working.Here is the error message I get:[sat Jul 09 10:40:04 2011] [error] [client 94.224.149.210] PHP Fatal error: Uncaught exception 'SmartyException' with message 'Unable to load template file '/home/prestashop/prestashop/themes/MyTheme/./view-line.tpl'' in /home/prestashop/prestashop/tools/smarty/sysplugins/smarty_internal_template.php:163\nStack trace:\n#0 /home/prestashop/prestashop/tools/smarty/sysplugins/smarty_internal_template.php(551): Smarty_Internal_Template->isExisting(true)\n#1 /home/prestashop/prestashop/tools/smarty/compile/89d396ba15aedc07ab68de4d679d1d813c204625.file.view.tpl.php(78): Smarty_Internal_Template->getRenderedTemplate()\n#2 /home/prestashop/prestashop/tools/smarty/sysplugins/smarty_internal_template.php(433): include('/home/prestasho...')\n#3 /home/prestashop/prestashop/tools/smarty/sysplugins/smarty_internal_template.php(568): Smarty_Internal_Template->renderTemplate()\n#4 /home/prestashop/prestashop/tools/smarty/Smarty.class.php(339): Smarty_Internal_Template->getRenderedTemplate()\n#5 /home/prestashop/prestashop/tools/smarty/Smarty.class.php(383): Smarty->fetch('/home/pr in /home/prestashop/prestashop/tools/smarty/sysplugins/smarty_internal_template.php on line 163, referer: http://localhost/modules/mymodule/view.php Link to comment Share on other sites More sharing options...
jgonze Posted July 30, 2011 Author Share Posted July 30, 2011 Any help? Still looking for a solution... Link to comment Share on other sites More sharing options...
rocky Posted July 30, 2011 Share Posted July 30, 2011 You will see the solution if you look at the default category block in PrestaShop. On lines 280-283 (in PrestaShop v1.4.4) of modules/blockcategories/blockcategories.php you will see: if (file_exists(_PS_THEME_DIR_.'modules/blockcategories/blockcategories_footer.tpl')) $smarty->assign('branche_tpl_path', _PS_THEME_DIR_.'modules/blockcategories/category-tree-branch.tpl'); else $smarty->assign('branche_tpl_path', _PS_MODULE_DIR_.'blockcategories/category-tree-branch.tpl'); This code checks whether an override exists and adds the right path in the branche_tpl_path variable. Then on line 36 of modules/blockcategories/blockcategories.tpl, you will see: {include file="$branche_tpl_path" node=$child} Link to comment Share on other sites More sharing options...
Ali Samie Posted August 5, 2022 Share Posted August 5, 2022 I fixed it this way: In php files like the controller: $this->context->smarty->assign([ 'module_dir' => _PS_MODULE_DIR_ . "{$this->module->name}/" ]); $this->setTemplate("module:{$this->module->name}/views/templates/front/mixlist.tpl"); In tpl files: {include file="{$module_dir}views/templates/front/_partials/miniatures/brand.tpl" brand=$brand} 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now