在.tpl文件Prestashop中包含其他.tpl

时间:2014-01-13 14:51:23

标签: smarty prestashop prestashop-1.5

我使用的是Prestashop 1.5.4.1,我想在其他模块中调用一个模块(正好我需要在家用特色产品上方使用滑块模块)。我试图通过

来调用它

包含file ='.. / directory / module.tpl'

但我总是只得到没有任何代码的空白页面。我也尝试了不同的目录语句方式,但总是结果是一样的。是否有可能以正确的方式包含新模块?

4 个答案:

答案 0 :(得分:5)

为此,您的目录结构应该是(使用PrestaShop 1.6):

-- mymodule.php
-- views
---- templates
------ hook
------ displayFooBarTemplate.tpl
-------- inc
---------- foo.tpl
---------- bar.tpl

绝对方式:

从您的主模块文件:

protected function displayFooBarTemplate()
{
    global $smarty;

    ...

    $smarty->assign('module_templates', dirname(__FILE__).'/views/templates/');

    return $this->display(__FILE__, 'displayFooBarTemplate.tpl');
}

然后在你的tpl文件(displayFooBarTemplate.tpl)中:

{include file="{$module_templates}hook/inc/modal/foo.tpl"}

{include file="{$module_templates}hook/inc/modal/bar.tpl"}

相对方式(我最喜欢的):

{include './inc/foo.tpl'}

{include './inc/modal/bar.tpl'}

答案 1 :(得分:1)

在Prestashop 1.6中对我有用的是

{include file="$tpl_dir/modules/blocknewsletter/blocknewsletter.tpl"}

我把它放在footer.tpl文件中并正确显示订阅时事通讯的文本框。我想它也适用于所有其他模块。

答案 2 :(得分:0)

包含smarty标签的正确方法包括使用curl括号。

{include file='directory/module.tpl'}

请注意,include语句中的目录应该与templates目录相关。

http://www.smarty.net/docsv2/en/language.function.include.tpl

答案 3 :(得分:0)

在你的php代码中声明一个这样的变量:

$this->path_to_tpl_folder = str_replace('\\', '/', _PS_MODULE_DIR_) . 'mon_module/tpl';
$this->context->smarty->assign('tpl_path', $this->path_to_tpl_folder)

然后在你聪明的模板中:

{include file=$tpl_path/my_file.tpl}

与Prestashop 1.4和1.5兼容。