PEAR. Как подключить к темплейту темплейт

Savio

Новичок
PEAR. Как подключить к темплейту темплейт

Прежде чем задать вопрос, искал ответ в инете. Единственное что нашел, так это тот же мой вопрос.

Что бы было все понятно приведу маленький пример
Главный темплейт
PHP:
--------index.tpl.html--------
<html>
<body>
Главный темплейт загружен<br>
{DATA}
</body>
</html>
Второстепенный темплейт
PHP:
------index2.tpl.html-----
Загружен второй темплейт<br>
A={A}
Ну и сам индекс
PHP:
----index.php-----
<?php
require_once "HTML/Template/IT.php";

$tpl = new HTML_Template_IT("./templates");

$tpl->loadTemplatefile("index.tpl.htm", true, true);

$tpl->setVariable("DATA", $tpl->getfile('index2.tpl.html')) ;
$tpl->setVariable("A","проба");

$tpl->show();
?>
В итоге получаю следующие
PHP:
Главный темплейт загружен
Загружен второй темплейт
A=
Подскажите пожалуйста что я делаю не так!
 

tristram

Guest
сказать сложно, сам не юзал. как вариант замени
PHP:
$tpl->setVariable("DATA", $tpl->getfile('index2.tpl.html'));
$tpl->setVariable("A","проба");
на
PHP:
$tpl->setVariable("A","проба");
$tpl->setVariable("DATA", $tpl->getfile('index2.tpl.html'));
но скорее всего дело не в этом. вложенные переменные такие можно делать?
 

Savio

Новичок
tristram
Неужели ты думаеш что я не попробывал такой вариант. я ставил и до и после. Народ! Я вот не могу понять. Вы думаете это круто что нибудь ляпнуть, мол я не знаю но ты попробуй...
Если не знаеш так зачем никать что нибудь. Если хотите помочь и заодно для себя черпнуть знаний так лутше поищите, дайте ссылку на доку если повезло найти что-то. Чем я собственно сейчас и занимаюсь
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
а на эту часть пакета HTML_Template_IT доки нету вообще. А так тебе нужно подключать класс HTML_Template_ITX и использовать метод addBlockfile().

А tristram'а прости, ему всего 15, и он тут типа местная достопримечательность, типа макаки в вольере.
 

vb

Новичок
Savio, я тоже ничего в доках не видел, но насколько я понял дело в том что блоки замены определяются пакетом при вызове loadTemplatefile, если в коде не хочешь копаться, можешь посмотреть добавив в index.tpl.html {A}. В результате заменится {A} которое было в index.tpl.html и index2.tpl.html.
Причем замена, производится при вызове show().
Соответственно тебе нужгно всего лишь объявить твой блок для замены {A} между вызовом loadTemplatefile() и show().
Решение влоб:
PHP:
  $tpl->blockvariables['__global__']['A'] = 1;
Ну а о красоте сам подумай.
С уважением, vb.
 

Savio

Новичок
Все решение найдено!!!
Я кстати извеняюсь. но такая проблема уже обсуждалась на форуме, хотя как то не четко оформлен вопрос и ответ

Надо сделать так
PHP:
----index.php----- 
<?php 
require_once "HTML/Template/IT.php"; 

$tpl = new HTML_Template_IT("./templates"); 
$tpl_sub = new HTML_Template_IT(); 

$tpl->loadTemplatefile("index.tpl.htm", true, true); 
$tpl_sub->loadTemplatefile("index2.tpl.htm", true, true); 

$tpl_sub->setVariable("A","проба"); 
$tpl->setVariable("DATA",  $tpl_sub-> get());


$tpl->show(); 
?>
Работает 100%. Проверял лично. Теперь можно подключать сколько угодно темплейтов!
Всем удачи!
 

tristram

Guest
[offtopic]
Sad Spirit
ты обалдел совсем? шампанзе такие как ты ходят с голой жопой и много понтов кидают не имея ничего кроме желания подосрать. я сказал же что дела не имел и это лишь моё предположение. я предпочитаю использовать свой собственный шаблонизатор.
[/offtopic]
 

Savio

Новичок
tristram я если не знаю то ничего не пишу. зачем кидать никому не нужные реплики, мол "я не знаю но это мое личное мнение...". Незнаеш, ну так следи за форумом. кто-то даст ответ и узнаеш. а так только мусор розводится. Может тебе нужен какойто психологический форум, форум-знакомст. так юзай его, а здесь люди дают конкретные ответы на конкретные вопросы. Не обежайся но ...
 

tristram

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