Решил вот на досуге сделать свою кмс. Механизм простой. В отдельной папке лежат шаблоны в которых в определенных местах вставленны так называемые кмсные теги ну например как в шаблонах phpbb {TEXT_BODY} и т.д. PHP cкрипт текст из шаблона грузит в переменную и потом обрабатывает заменяя эти теги соответственно на текст лежащий в базе. Но вот вопрос если я хочу чтоб при нахождении определенного тега выполнялась бы функция. Как мне это реализовать получше?
Простейший шаблонизатор теперь гордо зовут CMS?
Не совсем понятно что именно у тебя не получается. Нашел тег - вызвал соответствующую этому тегу функцию, результат подставил вместо тега. Если у тебя не фиксированный набор функций и имя функции задается в теге, то используй eval, проблемы безопасности тебя ведь не волнуют :)
Ну шаблонизатор я конечно сделаю в первую очередь. Далее планирую расширить возможности
eval я не использую ....... я использую call_user_func
появился другой вопрос. Делаю модуль обработки плагинов. в базе данных лежит инфа CMS-ный тег и файл на какой ссылается этот тег. Скрипт находит этот тег в шаблоне и в это место инклудит файлик (include ()). Теперь сам вопрос... Хотелось бы като в этой базе хранить переменные... ну например тег {NEWS_1} ссылается на например на news.php?id=1, тег {NEWS_2} ссылается на например на news.php?id=2 и так далее. Т.е. должен выполнится код
include ("news.php?id=1")... но это не работает
. А вот как это сделать я не придумал. Мож кто подскажет чего
>появился другой вопрос. Делаю модуль обработки плагинов. в базе данных лежит инфа
>CMS-ный тег и файл на какой ссылается этот тег. Скрипт находит
>этот тег в шаблоне и в это место инклудит файлик
>(include ()). Теперь сам вопрос... Хотелось бы като в этой базе
>хранить переменные... ну например тег {NEWS_1} ссылается на например на news.php?id=1,
>тег {NEWS_2} ссылается на например на news.php?id=2 и так далее. Т.е.
>должен выполнится код
>include ("news.php?id=1")... но это не работает
>. А вот как это сделать я не придумал. Мож кто подскажет
>чегоДавно не занимался PHP
$id = 1;
include "news.php"Она не видна в news.php?
For example:
1
2 $a = 1;
3 include "b.inc";
4
Here the $a variable will be available within the included b.inc script.
>
>Давно не занимался PHP
>$id = 1;
>include "news.php"
>
>Она не видна в news.php?В том то все и дело что в таком виде будет видна. а вот как это сделать если в базе хранится значение news.php?id=1
>>
>>Давно не занимался PHP
>>$id = 1;
>>include "news.php"
>>
>>Она не видна в news.php?
>
>В том то все и дело что в таком виде будет видна.
>а вот как это сделать если в базе хранится значение news.php?id=1
>Variable variables
Sometimes it is convenient to be able to have variable variable names. That is, a variable name which
can be set and used dynamically. A normal variable is set with a statement such as:
1
2 $a = "hello";
A variable variable takes the value of a variable and treats that as the name of a variable. In the above
example, hello, can be used as the name of a variable by using two dollar signs. i.e.
1
2 $$a = "world";
3
At this point two variables have been defined and stored in the PHP symbol tree: $a with contents
"hello" and $hello with contents "world".Если хранится news.php?id=1 - разбей на токены (разделители ? = )
>Решил вот на досуге сделать свою кмс. Механизм простой. В отдельной папке
>лежат шаблоны в которых в определенных местах вставленны так называемые кмсные
>теги ну например как в шаблонах phpbb {TEXT_BODY} и т.д. PHP
>cкрипт текст из шаблона грузит в переменную и потом обрабатывает заменяя
>эти теги соответственно на текст лежащий в базе. Но вот вопрос
>если я хочу чтоб при нахождении определенного тега выполнялась бы функция.
>Как мне это реализовать получше?выгружай данные в XML, шаблон делай в XSL.
Честно говоря, мне совершенно не понятно, почему вопрос с шаблонами/шаблонизаторами до сих пор считается одним из актуальных, когда почти 9 лет как был реализован XSLT, причем он стандартизован W3C, имеет удобный синтаксис, достаточно возможностей, преобразование на стороне клиента - что еще?
Тем не менее, ни в одной статье о шаблонизаторах я не встречаю даже упоминания об XLST.