|
|
|
| Допустим есть шаблон
...
<B>%NAME%</B><BR><B>%VALUE%</B>
...
|
Есть база данных с "подшаблонами"
%NAME% => 123
%VALUE% => <DIV>abc<BR>123<BR><TABLE>...</TABLE></DIV>
|
надо сделать так:
каким-то способом парсим первый шаблон, выбираем массив переменных с %%
потом обходим этот массив и достаем соответствующие записи из БД и вставляем в исходный массив, после чего готовый результат отдаем смарти например
у кого есть предложения, как это лучше реализовать? | |
|
|
|
|
|
|
|
для: Петр
(07.02.2008 в 08:11)
| | в смарти есть тег {include file=""}
вместо самого шаблона храните a базе его имя. | |
|
|
|
|
|
|
|
для: Loki
(07.02.2008 в 12:15)
| | не понял, а как доставить из БД в функцию include? | |
|
|
|
|
|
|
|
для: Петр
(07.02.2008 в 14:46)
| | А зачем ее из базы доставать, у вас что Смарти в базу "инсталлирован"?) | |
|
|
|
|
|
|
|
для: sim5
(07.02.2008 в 19:28)
| | Так для include файл нужен, судя по всему... а текст в БД.
PS а... предлог пропустили? :) | |
|
|
|
|
|
|
|
для: kasmanaft
(07.02.2008 в 20:14)
| | >автор: Loki (07.02.2008 в 12:15)
>в смарти есть тег {include file=""}
>вместо самого шаблона храните a базе его имя.
Все ведь после этого.) | |
|
|
|
|
|
|
|
для: sim5
(07.02.2008 в 20:18)
| | В том-то все и дело, что надо на в файле хранить эти подшаблоны а в БД и для удобства включать их не функцией include... а конструкцией типа %ШАБЛОН% | |
|
|
|
|
|
|
|
для: Петр
(08.02.2008 в 06:12)
| | Ну тогда, наверное, стоить посмотреть в сторону fetch - до этого определили переменные передаваемые в шаблон, получили шаблон... вывод готового. | |
|
|
|
|
|
|
|
для: sim5
(08.02.2008 в 07:37)
| | Причем тут смекалка, на таком принципе большинство цмс строится. Возьмите бесплатный какой нибуь цмс и посмотрите, наверняка там используется такая конструкция.
По крайней мере у меня делается очень просто - при сборке страницы создается ассоциативный массив, где имя переменной - имя шаблона, а в значении - соответственно значение, и перед выводом страницы производится замена всех шаблонов на соответствующие элементы массива, если элемента нет, меняется на пустоту. Откуда заполнять массив - из базы, или из констант, или из файла предустановок дело уже десятое и может сочетаться | |
|
|
|