Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Интересно разобраться
 
 автор: Sin   (18.03.2005 в 23:20)   письмо автору
 
 

Я вот опять полез скрипты разбирать и как всегда меня подвели мои знания. Подскажите пожайлуста что бы это делает
<php
$template->set_filenames(array(
        'body' => 'memberlist_body.tpl')
); 
?>

   
 
 автор: cheops   (18.03.2005 в 23:55)   письмо автору
 
   для: Sin   (18.03.2005 в 23:20)
 

Метод set_filenames объекта $template принимает в качестве аргумента массив, который формируется налету при помощи конструкции array. Массив содержит один элмент с ключом body и занчением 'memberlist_body.tpl'.

   
 
 автор: Artem S.   (19.03.2005 в 07:20)   письмо автору
 
   для: Sin   (18.03.2005 в 23:20)
 

Если не ошибаюсь - это строчка из кода phpbb форума.
Есть объект $template и для этого класса есть предопределенные функции.
В данном конкретном случае просто для шаблона указывается, какие файл(ы) будут использованы для построения страницы.

   
 
 автор: Sin   (19.03.2005 в 15:31)   письмо автору
 
   для: Artem S.   (19.03.2005 в 07:20)
 

Да вы примерно угадали, дело вот в чем
(немного уже разобрался и могу дать полную картину)
Сначало это
<?php
$template
->set_filenames(array(
        
'body' => 'memberlist_body.tpl')
);
?>

потом делается это примерно это (кусочек из скрипта)
<?php
$template
->assign_vars(array(
'L_POSTS' => $lang['Posts'],
'L_POINTS' => $board_config['points_name'],
);
?>

А в конце делается так
<?php
$template
->pparse('body');
?>

т.е. как я понял все переменные передаются в фаил 'memberlist_body.tpl'
Который в свою очередь содержит такой вот примерный код

<tr>
      <td>
      {L_POSTS}
      </td>
      <td>
       {L_POINTS}
</tr>

Вот вопросик, а вот этот {L_POSTS} заменяется на пост юзера благодаря процедурам выше? Или это можно добится и другими способами?

   
 
 автор: Artem S.   (19.03.2005 в 16:21)   письмо автору
 
   для: Sin   (19.03.2005 в 15:31)
 

Да, за это отвечает функция pparse()
Все что находиться между скобок { и } заменяется на значения, переданные функцией assign_vars().

P.S. Все это реализация шаблонов. Мне очень нравиться Smarty (http://smarty.php.net). Раньше я тоже использовал принцип из phpbb, пока не узнал про smarty

   
 
 автор: Sin   (19.03.2005 в 18:32)   письмо автору
 
   для: Artem S.   (19.03.2005 в 16:21)
 

Хм... класс.. так получается функции
set_filenames()
assign_vars()
pparse()
Это стандартные функции php? или я не так понял?

   
 
 автор: Artem S.   (19.03.2005 в 18:49)   письмо автору
 
   для: Sin   (19.03.2005 в 18:32)
 

Вы не так поняли. phpbb подключает файл /includes/template.php
Там описан класс и функции.
Потом создается объект класса templates

Чтоб использовать эти функции скопируйте себе этот файл, подключите и создайте объект $template

   
 
 автор: RV   (19.03.2005 в 20:19)   письмо автору
 
   для: Artem S.   (19.03.2005 в 18:49)
 

помоему в пхпбб используется система на основе smarty (по крайней мере примерно так написано в хелпе).

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования