Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   создание шаблонов для разделения кода от дизайна (http://www.flasher.ru/forum/showthread.php?t=89612)

Americanets 19.12.2006 18:35

создание шаблонов для разделения кода от дизайна
 
как можно создать шаблон, с типовыми данными которые просто вставляются более или менее понятно , можно парсить файл шаблона а потом вместо {title} вставлять $title а как быть если нужно вставить алгоритм например при создании html таблицы, которая строится автоматом на данных из базы?

rtm 19.12.2006 18:55

Когда я самостоятельно писал свой парсер шаблонов я делал что-то вроде:
Код:

{tbl users}<table ...>
<!--Заголовок-->
<tr><th>Имя</th><th>Возраст</th><th>Пол</th></tr>
{tblrow username age gender}
<tr><td>{username}</td><td>{age}</td><td>{gender}</td></tr>
{/tblrow}
</table>
{/tbl}

Это все пасится с помощью регулрных выражений, ну а дальше дело техники.

А вообще - зачем изобретать велосепед, когда есть уже готовые шаблонизаторы, такие какSmarty?

Americanets 22.12.2006 11:22

Вот, налабал начало шаблонизатора, естественно единичные данные выводит, также естественно динамичные данные мне нужно будет впихнуть в 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;
?>


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

Код:

<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>


Americanets 23.12.2006 18:22

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

Код HTML:

$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;
}

}

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

Gaen 29.12.2006 04:06

http://inetmoney.h15.ru/template_demo/template.inc
Мой вариант. Тупой как пробка. Работает. Служит уже несколько лет... :)

rtm 09.01.2007 14:04

Цитата:

Сообщение от Americanets
еще попробвал

Код HTML:

$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;
}

}

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

Вытащите return из цикла while.


Часовой пояс GMT +4, время: 07:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.