|
|
|
| Извиняюсь, нечаянно продублировал тему.
Плиз, удалите лишнюю. | |
|
|
|
|
|
|
|
для: D.Lans
(18.08.2006 в 01:15)
| | >Извиняюсь, нечаянно продублировал тему.
>Плиз, удалите лишнюю.
По ходу удалили не ту. Что инересует, конкретней... | |
|
|
|
|
|
|
|
для: Lelik
(18.08.2006 в 02:12)
| | Вы удалили не ту тему???
Я в шоке...
Хорошо, что у меня есть старая привычка сохранять то что я пишу на форумах - в отдельный файл по мере написания..
Все равно, в следующий раз будьте осторожнее!
Итак:
написал (а точнее мне помогли написать) небольшую но удобную систему шаблонов.
Суть ее в том, что она парсит файл со шаблоном, находит в нем: {text}, {title} и меняет на "Здраствуйте, добро пожаловать на сайт", "Заголовок сайта", к примеру.
Но теперь нужно реализовать динамику в шаблоне - чтобы могли выводится например новости (а их количество заранее предусмотреть невозможно - их может быть хоть 1 хоть 20).
Я хочу это организовать так:
<table>
<loop news>
<tr>
<td>{zagolovok}</td>
</tr>
<tr>
<td>{news_text}</td>
</tr>
</loop news>
</table>
|
Между тегами <loop> - кусок кода который должен повторяться нужное количество раз, на каждом шаге в значения {zagolovok} и {news_text} - должны подставляться значения.
Думаю, идея ясна.
Однако моих знаний не хватает для реализации этой идее.
Кто-нибудь, оч прошу, может помочь это сделать или кинуть ссылку на материалы по этой теме.
Уже неделю мучаюсь.. Не могу сделать никак..
p.s. не могу на форуме найти свою тему.
Захожу в нее, найдя ее через поиск или заходя по сохраненной ссылке.. | |
|
|
|
|
|
|
|
для: D.Lans
(19.08.2006 в 02:26)
| | и еще, не совсем в тему конечно, но т.к. я пишу свой сайт, меня это тоже интересует..
Хочу реализовать BB коды на своем сайте.
Плиз киньте ссылочку, где это цивильно описывается - как это делать.
Желательно в стиле регулярных выражений Perl (ибо его осваиваю). | |
|
|
|
|
|
|
|
для: D.Lans
(19.08.2006 в 02:29)
| | в форуме "регулярные выражения" полно подобных тем | |
|
|
|
|
|
|
|
для: D.Lans
(19.08.2006 в 02:26)
| | а у вас сайт на файлах или на БД? | |
|
|
|
|
|
|
|
для: Lelik
(19.08.2006 в 02:30)
| | на БД (MySQL 4) | |
|
|
|
|
|
|
|
для: D.Lans
(19.08.2006 в 02:31)
| | вообще подобный вывод делается с помощью циклов | |
|
|
|
|
|
|
|
для: Lelik
(19.08.2006 в 02:33)
| | в том то и дело что циклы должны быть в PHP коде..
а в шаблоне только определены места для вставки переменных {text}
и как я уже написал - циклы, чтобы парсер знал, что надо данные проциклить.
например парсер находит
<loop news>
</loop>
и в зависимости от найденной переменной, (в данном случае news) выводит из БД какие-то данные, беря код между тегами <loop> парся его на {news_text} и {text_news} например и на каждом шаге в цикле вставляя опеределенные данные из БД... | |
|
|
|
|
|
|
|
для: D.Lans
(19.08.2006 в 02:26)
| |
<?php
$query = "SELECT * FROM table news";
$res = mysql_query($query);
if(!$res) exit(mysql_error());
else
$news = mysql_fetch_array($res);
echo '<table><loop news>';
for($i = 0; $i<mysql_num_rows($res); $i++)
{
echo'
<tr>
<td>'.$news["zagolovok"].'</td>
</tr>
<tr>
<td>'.$news["news_text"].'</td>
</tr> ';
}
echo '</loop news></table>';
?>
|
| |
|
|
|
|
|
|
|
для: Lelik
(19.08.2006 в 02:37)
| | спасибо за код, сейчас гляну | |
|
|
|
|
|
|
|
для: D.Lans
(19.08.2006 в 02:38)
| | Это не совсем то.
В вашем примере код между тегами <loop> уже известен, а он может быть любым, его надо брать из шаблона. | |
|
|
|
|
|
|
|
для: D.Lans
(19.08.2006 в 02:39)
| | я код исправил, попробуй заново | |
|
|
|
|
|
|
|
для: Lelik
(19.08.2006 в 02:41)
| | Все равно совсем не то.
У тебя теги <loop> <table> <tr> уже известны программисту и вставляются в PHP коде.
А в том и соль, что дизайнер, который работает только с шаблоном (PHP кода он не знает) - должен в своем шаблоне написать:
<table>
<loop news>
<tr>
<td>{zagolovok}</td>
</tr>
<tr>
<td>{news_text}</td>
</tr>
</loop news>
</table>
|
parser.php загружает этот файл, ищет в нем теги <loop>, в теге <loop> ищет:
<loop news>
ключевое слово news (оно может быть произвольным) и уже в зависимости от этого слова делает что-то, в частности - загружает из БД именно список новостей, а не что-то другое.
далее он находит кусок кода между тегами <loop>
в нашем случае это:
<tr>
<td>{zagolovok}</td>
</tr>
<tr>
<td>{news_text}</td>
</tr>
|
И прогоняет его по циклу столько раз, сколько найдено новостей в БД.
На каждом прогоне (итерации) - подставляет вместо {zagolovok} и {news_text} нужные данные из бд.
+на каждом шаге "запихивает" очередной блок кода (между тегами <loop> который) в одну строковую переменную..
затем эту переменную подставляет вместо <loop>, + стирает </loop>
Получается готовый отпарсенный файл..
В общем, пока я писал, я кажется сам понял как это сделать. :))))))) | |
|
|
|
|
|
|
|
для: D.Lans
(19.08.2006 в 02:52)
| | а теперь посмотри внимательней на тот код, что я представил здесь - то, о чем ты как долго писал | |
|
|
|
|
|
|
|
для: Lelik
(19.08.2006 в 02:55)
| | Не совсем.
Все же спасибо.
Код я написал, только он не работает как надо..
Буду разбираться.. | |
|
|
|
|
|
|
|
для: D.Lans
(19.08.2006 в 02:39)
| | >Это не совсем то.
>В вашем примере код между тегами <loop> уже известен, а он может быть любым, его надо брать из шаблона.
я чет не понял, это как - брать из шаблона? | |
|
|
|
|
|
|
|
для: Lelik
(19.08.2006 в 02:42)
| | "брать из шаблона" - значит загружать файл с шаблоном в отдельную строковую переменную и уже затем оперировать с ней. | |
|
|
|
|
|
|
|
для: D.Lans
(19.08.2006 в 02:26)
| | Не легче ли взять готовый шаблонизатор, который и быстрее и эффективнее работать будет?
[поправлено модератором] | |
|
|
|