phplib templates и switch

KhasDenis

Guest
phplib templates и switch

Как реализовать что бы в зависимости от некоторого условия показывался/непоказывался некоторый блок шаблона. Я использую phplib templates. Документация которую я вместе c phplib скачал очень что то скудная.
 

Said

Guest
где-то так
PHP:
$tpl->set_block('PAGE', 'block_name', 'BLOCK_NAME');

....

if(условие) {
  $tpl->parse('BLOCK_NAME', 'block_name');
}
если блок объявлен (set_block) но не пропарсен то он не выводится
 

KhasDenis

Guest
Спасибо, сейчас попробую. Подскажите заодно что за параметры 'block_name' и 'BLOCK_NAME' .... я по примеру из доки использую несколько шаблонов с блоками, но эти переменные мне кажуться непонятными.
 

KhasDenis

Guest
=====block.tpl===========
PHP:
<!-- BEGIN first -->
   first block
<!-- END first -->
<!-- BEGIN second -->
   second block
<!-- END second -->
=====test.php===========
PHP:
<?
  include("template.inc");
  $template =new Template(".", "keep");
  $template->set_file(array("page"=>"block.tpl"));
  
  $id =$_GET["id"];
  $template->set_block("page", "first", "FIRST");
  $template->set_block("page", "second", "SECOND");
  
  if($id == 1){
     $template->parse("FIRST", first);
  } else if($id == 2){
     $template->parse("SECOND", second);
  }
  $template->parse("OUT", "page");
  $template->p("OUT");
?>
===========================================
Вывод в браузере
first block {SECOND}
 

Said

Guest
Правильно работает. Разве что еще убрать из конструктора параметр keep
чтобы не выводило пустые переменные
блока

Третий параметр в set_block - это имя переменной куда будет парсится блок. Это она и выводится - {SECOND} - потому что пустая (id=1, вторй блок не парсится)
Насколько помню в мануале про это что-то есть (see щписание метода set_block)

Параметр вообще-то необязательный но без него этот пример работать не будет
 

KhasDenis

Guest
Спасибо, все заработало.
keep заменил на remove
 
Сверху