Включите другой .tpl в файл .tpl Prestashop

Я использую Prestashop 1.5.4.1, и я хотел бы вызвать модуль в другом модуле (именно мне нужно использовать модуль слайдера прямо над домашними рекомендуемыми продуктами). Я пытался позвонить через

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

но всегда получаю только пустую страницу без кода. Я также пробовал использовать разные способы указания каталога, но всегда результат был одинаковым. Есть ли возможность правильно включить новый модуль?


person kacper    schedule 13.01.2014    source источник


Ответы (4)


Чтобы это работало, ваша структура каталогов должна быть (с использованием 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'}
person José Pablo Orozco Marín    schedule 05.01.2015
comment
{include 'inc / foo.tpl'} не работал, но {include './inc/foo.tpl'} работал !! - person user109764; 10.06.2016
comment
Что я носил ... {include file = $ tpl_dir. / Modules / blockcategories / blockcategories.tpl} - ›в product.tpl. Почему не загружается файл .tpl для категорий? Любая идея ? - person Blue; 14.02.2017

Что сработало для меня в Prestashop 1.6, так это

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

Я поместил это в файл footer.tpl и правильно отобразил текстовое поле для подписки на информационный бюллетень. Полагаю, это работает и для всех остальных модулей.

person Gabriele Pala    schedule 22.05.2014

Правильный способ добавления смарт-тега включает использование фигурных скобок.

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

Обратите внимание, что каталог в операторе include должен быть относительно каталога шаблонов.

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

person Panama Jack    schedule 13.01.2014

В вашем 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.

person AlexDeb    schedule 19.01.2014