Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы » Как загрузить tpl в уже загруженный tpl через Php

Как загрузить tpl в уже загруженный tpl через Php


     Общие вопросы, Шаблоны (TPL), Общие вопросы по PHP    3862

вопрос
В начале скрипта загружен TPL
$tpl->load_template( 'test.tpl' );

в зависимости от условия надо подгрузить тегом {test} в основной шаблон (тест) один из трех шаблонов, без замены основного.

Я пробовал напрямую типо так:

$tpl->load_template( 'test.tpl' );

if(условие){
$content = $tpl->load_template( 'test1.tpl' );
}else{
$content = $tpl->load_template( 'test2.tpl' );
}

$tpl->set( '{test}', $content );


Но после этого способа слетал основной шаблон. Помогите как реализовать.

Ответа пока нет


12 комментариев

ПафНутиЙ
Админ

ПафНутиЙ - -

Опять готовите к выходу очередной "модуль"?

Каков вопрос - таков и ответ. Просто помните об этом.

golden_eagle_god
Юзер

golden_eagle_god - -

Это не ваше дело, вы не пользовались моим модулем, не вам судить! Знаете как сделать?

golden_eagle_god
Юзер

golden_eagle_god - -

Поднимаю вопрос

R00t
Юзер

R00t - -

не пробовал, но может и заработает )))))))))
$tpl->load_template( 'test.tpl' );

if(условие){
    $tpl->load_template( 'test1.tpl' );
    $tpl->set( '{test1}', "test1" );
    $tpl->compile( 'test1' );
    $tpl->clear();
    $content .= $tpl->result['test1];
}else{
    $tpl->load_template( 'test2.tpl' );
    $tpl->set( '{test2}', "test2" );
    $tpl->compile( 'test2' );
    $tpl->clear();
    $content .= $tpl->result['test2];
}


$tpl->set( '{test}', $content );
$tpl -> compile('content');
$tpl -> clear();

golden_eagle_god
Юзер

golden_eagle_god - -

спасибо буду пробовать!)

golden_eagle_god
Юзер

golden_eagle_god - -

Не работает, так же пустую страницу выдает

golden_eagle_god
Юзер

golden_eagle_god - -

Поднимаю вопрос 2

rocksmart
Юзер

rocksmart - -

Жесть
Нужно объявлять имя tpl отличным от основного и соответственно сам вызов класса. Ладно седня расскажу с компа.

golden_eagle_god
Юзер

golden_eagle_god - -

Хорошо, жду.

rocksmart
Юзер

rocksmart - -

$tpl->load_template( 'test.tpl' );

    
$Mytpl = new dle_template();
$Mytpl->dir = TEMPLATE_DIR;    
if(условие){
$Mytpl->load_template( 'test1.tpl' );
}else{
$Mytpl->load_template( 'test2.tpl' );
}

$tpl->set( '{test}',$Mytpl->copy_template);

stanley
Юзер

stanley - -

столкнулся с такой же проблемой... Как советовал Rocksmart, тоже выводит только тег {test}

golden_eagle_god
Юзер

golden_eagle_god - -

Я делал также, вот:
$tpl->load_template( 'test.tpl' );

$tpl_2 = new dle_template( );
$tpl_2->dir = TEMPLATE_DIR;

$tpl_2->load_template( 'test1.tpl' );
$tpl_2->compile( 'test1' );
$tpl_2->clear();
    
$content.=$tpl_2->result['test1'];

$tpl->set( '{output}', $content );

$tpl -> compile('content');
$tpl -> clear();


Но думал что есть способ проще. Почему например в show.full.php подгружается много TPL без создания нового класса?

Похожие вопросы

наверх