Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шаблонизатор 
:(
    Опции темы
americanets
Дата 20.12.2006, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



ясно буду разбираться, может что выйдет


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Rock
Дата 20.12.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 13.1.2005
Где: Краснодар

Репутация: 0
Всего: 1



по моему лучше xslt нет ничего, но это имхо. 
PM MAIL ICQ   Вверх
americanets
Дата 21.12.2006, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Вот, налабал начало шаблонизатора, естественно единичные данные выводит, также естественно динамичные данные мне нужно будет впихнуть в CONTENT, вопрос как это можно сделать? 
Код

<?
$f = fopen("1","r");
$PAGE_CONTENT="контент";
$PAGE_TITLES="титлес";
$CONTENT = @fread($f,filesize("1"));
fclose($f);
$CONTENT = preg_replace("/CONTENT/", $PAGE_CONTENT, $CONTENT);
$CONTENT = preg_replace("/TITLES/", $PAGE_TITLES, $CONTENT);
echo $CONTENT;
?>



--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
americanets
Дата 22.12.2006, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



например при выдаче результатов поиска примерно такая конструкция

Код

<a href="LINKS_TO_PAGE">TITLE_LINKS</a><br>
TEXT_KRATKO<br>
<a href="LINKS_TO_PAGE">подробно</a><br>
<hr>
либо таблица

Код


<table>
   <tr>
     <td>
        NAZVANIE
</td>
     <td>
    <img srk="FOTO">
     </td>
     <td>
      OPISANIE
     </td>
  </tr>
</table>


Добавлено @ 09:29 
как их обработать и всключить в цикл вобщем размножить, делить на страницы и т д 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
SamDark
Дата 22.12.2006, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



americanets
Так чем не устраивают приведённые мной выше примеры?


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
americanets
Дата 22.12.2006, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



по моему не полностью разделяют код от дизайна , а нужно допустим чтоб шаблон был 

Код

<a href="LINKS_TO_PAGE">TITLE_LINKS</a><br>
TEXT_KRATKO<br>
<a href="LINKS_TO_PAGE">подробно</a><br>
<hr>


а на выходе после цикла в страницу инклюдилось 

Код

<a href="***.htm">Название</a><br>
бла бла бла<br>
<a href="LINKS_TO_PAGE">подробно</a><br>
<hr>
<a href="***.htm">Название</a><br>
бла бла бла<br>
<a href="LINKS_TO_PAGE">подробно</a><br>
<hr>
<a href="***.htm">Название</a><br>
бла бла бла<br>
<a href="LINKS_TO_PAGE">подробно</a><br>
<hr>..............


с таблицами  тоже самое или 


в шаблоне 

Код

<table>
   <tr>
     <td>
        NAZVANIE
</td>
     <td>
    <img srk="FOTO">
     </td>
     <td>
      OPISANIE
     </td>
  </tr>
</table>


а на выходе 

Код

<table>
   <tr>
     <td>
        Название *******
</td>
     <td>
    <img srk="img**.gif">
     </td>
     <td>
      Описание ***********
     </td>

<tr>
     <td>
        Название *******
</td>
     <td>
    <img srk="img**.gif">
     </td>
     <td>
      Описание ***********
     </td>


<tr>
     <td>
        Название *******
</td>
     <td>
    <img srk="img**.gif">
     </td>
     <td>
      Описание ***********
     </td>

<tr>
     <td>
        Название *******
</td>
     <td>
    <img srk="img**.gif">
     </td>
     <td>
      Описание ***********
     </td>
  </tr>
</table>





--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Eugene_Bond
Дата 22.12.2006, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 3.9.2006

Репутация: 1
Всего: 4



Вариант простого, но хорошего шаблонизатора с ведомым контроллером: XTemplate

Поддерживает инклюды, блоки и переменные. Большего от шаблонизатора с ведомым контроллером и не требуется. Проект практически не обновляется, потому что практически все, что нужно в нем уже есть. Последнее обновление было в 2005 году. Если не ошибаюсь добавили нативное кеширование средствами шаблонизатора.
До этого он не обновлялся с 2003 -- кеширование дописывалось ручками.

Полностью отделяет логику от дизайна. Сам долго пользовался именно этим шаблонизатором. Понятен для дизайнеров. Пример шаблона (для описанной выше задачи):

Код

<!-- BEGIN: news -->
<table>
<!-- BEGIN: one -->
   <tr>
     <td>
        {ITEM.name}
     </td>
     <td>
     <img src="{ITEM.image}">
     </td>
     <td>
      {ITEM.description}
     </td>
</tr>
<!-- END: one -->
</table>
<!-- END: news -->


Пример выводящего кода:
Код

   $xtpl = new XTemplate(.....); // инициализация с нужными параметрами
   ... // получаем новости из базы
   ... // и складываем в массив $news
   ... // используя любой удобный для себя способ
   foreach ($news as $n) {
       $xtpl->assing('ITEM', $n);   // устанавливаем переменную
       $xtpl->parse('news.one');  // и парсим блок одной новости
   }
   $xtpl->parse('news');             // парсим блок всех новостей
   $xtpl->out('news');                 // и выводим его


Код писал по-памяти. Мог где-то немного с методами напутать, но идея именно такая.
PM MAIL   Вверх
americanets
Дата 22.12.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



ясно, все же хочется свое , чтоб все понятно было, а то не могу со сторонними шаблонизаторами работать smile

Добавлено @ 12:23 
вобщем как придумаю выложу, может кто раньше подскажет 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
SamDark
Дата 22.12.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



americanets
Цитата
по моему не полностью разделяют код от дизайна

А шаблонизатор полностью? Ничуть!

Eugene_Bond
Дизайнеру (точнее верстальщику) понятно то, к чему он привык. Нет никакой разницы, шаблонные ли это тэги или же пара конструкций PHP.

p.s. извиняюсь, но не сдержался:
Цитата

Код

 $xtpl->assing('ITEM', $n);   // устанавливаем переменную


 smile 


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Eugene_Bond
Дата 22.12.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 3.9.2006

Репутация: 1
Всего: 4



Цитата(SamDark @  22.12.2006,  14:36 Найти цитируемый пост)
Дизайнеру (точнее верстальщику) понятно то, к чему он привык.

Они, к сожалению, разные бывают.
Для некоторых и такое сложно.. А для некоторых не важно смарти это или XSLT -- работают со всем.
Но конструкции PHP ИМХО не кошерно использовать


Цитата(SamDark @  22.12.2006,  14:36 Найти цитируемый пост)
p.s. извиняюсь, но не сдержался:

извиняюсь, но не понял прикола
PM MAIL   Вверх
americanets
Дата 22.12.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



и все же есть ряд систем использующих свою систему шаблонов и позволяющих полностью избежать кода в дизайне например кмс мастер


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
americanets
Дата 23.12.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



сдклал так, но неработает

Код

$f = fopen("1","r");
$PAGE_CONTENT="контент";
$PAGE_TITLES="титлес";
$CONTENT = @fread($f,filesize("1"));
fclose($f);
$vstavka=ShowAll ();
$CONTENT = preg_replace("/CONTENT/", $vstavka, $CONTENT);
$CONTENT = preg_replace("/TITLES/", $PAGE_TITLES, $CONTENT);
echo $CONTENT;

function ShowAll () {
$query="SELECT * from `cms_pages`  where `content`  LIKE '%$poisk%'"; 
$query = mysql_query($query) or die (mysql_error()); 

WHILE ($dat=mysql_fetch_array($query))  { 
    print "<li>".$dat['id']."&nbsp;&nbsp;&nbsp;URL: <strong>".$dat['menu_neme']."</strong><br>\n"; 

}



--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
americanets
Дата 23.12.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



еще попробвал 
Код

$CONTENT = preg_replace("/CONTENT/", foo(), $CONTENT);


Код

function foo(){
$query="SELECT * from `cms_pages`  where `content`  LIKE '%$poisk%'"; 
$query = mysql_query($query) or die (mysql_error()); 
WHILE ($dat=mysql_fetch_array($query))  { 
$HTMLData= "<li>".$dat['id']."&nbsp;&nbsp;&nbsp;URL: <strong>".$dat['menu_neme']."</strong><br>\n"; 
return $HTMLData;
}

}


но выводит только первое , зато там где надо, как сделать чтоб все выводилось? 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
SamDark
Дата 25.12.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Eugene_Bond
Цитата

Но конструкции PHP ИМХО не кошерно использовать

То же можно сказать и про шаблоны. Всё это - дело вкуса с тем лишь отличием, что шаблонизатор надо ещё написать, придумать свою разметку, обучить верстальшика. Да и нагрузка на сервер дополнительная при парсинге шаблона...


americanets
Код

function foo(){
$query="SELECT * from `cms_pages`  where `content`  LIKE '%$poisk%'"; 
$query = mysql_query($query) or die (mysql_error()); 
WHILE ($dat=mysql_fetch_array($query))  { 
$HTMLData.= "<li>".$dat['id']."&nbsp;&nbsp;&nbsp;URL: <strong>".$dat['menu_neme']."</strong><br>\n"; 

}
return $HTMLData;
}



--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
americanets
Дата 25.12.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Спасибо, а нагрузка при таком решении сильно увеличивается ? 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1019 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.