Помощник
|
Шаблонизатор PHP |
gaaarfild
|
Сообщение
#1
|
||
|
|
||
|
|||
ZiTosS |
28.4.2009, 2:02;
Ответить: ZiTosS
Сообщение
#2
|
|
Зачем в шаблон помещать данные, нам легче из него эти данные забирать. Но нужно учесть, чтобы шаблонные вставки не перекликались с остальным текстом файла(тем же кодом HTML)
Для того чтобы вытащить нужный нам шаблон можно использовать file_get_contents(). Затем нам нужно пройтись по возвращенной строке(файлу) и заменить шаблонные вставки на их эквиваленты. Пример ниже: document.tpl <html> <head> </head> <body> Вставка 1: <%vstavka_1%><br> Вставка 2: <%vstavka_2%><br> Вставка 3: <%vstavka_3%><br> ......................................................... Вставка N: <%vstavka_N%><br> </body> </html> functions.php [php]// простейшая функция шаблонизации function parseTpl($file, $macros) { $info = file_get_contents($file); foreach($macros as $key=>$value) { $info = str_replace("<%$key%>", $value, $info); } $info = ereg_replace("<%[a-zA-Z0-9_-]*%>", "", $info); return $info; }[/php] Файл, который всё собирает: Вариант без БД without_db.php [php]include_once "functions.php"; $html = ""; $parse = array( "vstavka_1" => "Текст1", "vstavka_2" => "Текст2", "vstavka_3" => "Текст3", .................................... "vstavka_N" => "ТекстN", ); // вызываем обработчик шаблона $html = parseTpl("document.tpl", $parse); //можем продолжать собирать дальше... другие шаблоны присоединять и т.д. // печатаем собранный шаблон echo $html;[/php] Вариант c БД with_db.php Тогда структура таблицы: table(vstavka_1,vstavka_2,vstavka_3,...,vstavka_N); [php]include_once "mysql.php";// подключение к БД include_once "functions.php"; $html = ""; $resource = mysql_query([query]); while($array = mysql_fetch_array($resource)) { $html .= parseTpl("document.tpl", $array); } //можем продолжать собирать дальше... другие шаблоны присоединять и т.д. // печатаем собранный шаблон echo $html;[/php] |
|
|
Dengere_Ash |
29.4.2009, 13:08;
Ответить: Dengere_Ash
Сообщение
#3
|
|
gaaarfild, думаю, что проше будет написать php код со вставками HTML'a.
[php]<?php require "./head.html"; $meta = "<meta http-equiv='content-type' type='text/html, charset=windows-1251' />"; $content = "bla-bla-bla"; $footer = require("./footer.html"); ?>[/php] |
|
|
ZiTosS |
29.4.2009, 16:12;
Ответить: ZiTosS
Сообщение
#4
|
|
Dengere_Ash, зря вы так... Я не думаю, что gaaarfild не знает как включать файлы в исполняемые. Он хотел именно понять работу шаблонизаторов.
|
|
|
gaaarfild
|
Сообщение
#5
|
|
Dengere_Ash
ZiToss прав. Этот способ-то я знаю. Кстати, возник еще один вопрос. В этим шаблонизатором небольшая проблема при использовании AJAX. Когда нужно обновить какую-то информацию в поле с помощью него, а именно, отобразить что либо, он отображает не только эти данные, но и весь шаблон. Тоесть есть например Блок <div></div> В него надо написать после срабатывания скрипта AJAX - Успешно. Но в него отображается весь шаблон полностью а не только надпись "Успешно". gaaarfild, думаю, что проше будет написать php код со вставками HTML'a. [php]$footer = require("./footer.html");[/php] Кстати, конструкция неправильна. Он не загрузит файл в переменную а сразу присоединит его к странице. =) |
|
|
sc2r2bey |
19.10.2009, 14:12;
Ответить: sc2r2bey
Сообщение
#6
|
|
вот натолкнулся, что по этому поводу скажите?
[php]module.php -------------- <? include('config.php'); $data = $db->query('SELECT * FROM guestbook')->asArray(); include('template.html'); ?>[/php] -------------------- программирую web и для we |
|
|
gaaarfild
|
Сообщение
#7
|
|
А что это? =)
|
|
|
ZiTosS |
21.10.2009, 16:41;
Ответить: ZiTosS
Сообщение
#8
|
|
gaaarfild,
Кстати, возник еще один вопрос. C этим шаблонизатором небольшая проблема при использовании AJAX. Когда нужно обновить какую-то информацию в поле с помощью него, а именно, отобразить что либо, он отображает не только эти данные, но и весь шаблон. То есть есть например Блок <div></div> В него надо написать после срабатывания скрипта AJAX - Успешно. Но в него отображается весь шаблон полностью а не только надпись "Успешно". Хех... Ну ты подумай сам, что шаблон это просто начальное формирование контента и за последующие вставки JavaScript и Ajax он не отвечает. Вообще я всегда делаю так: Если страница формируется на начальном этапе - то применимы шаблоны и шаблонизатор. Если мы хотим проитзвести какие либо действия с помощью Ajax, мы лмбо просто выводом на экран формируем контент, либо у нас должен быть отдельный шаблон, который выводит то что нам нужно. А у тебя... К примеру, ты загрузил низ страницы и меняешь в нём с помощью Ajax, зачем же заменять целую часть шаблона если тебе ,к примеру, в div нужно вернуть успешность выполнения или полученный контент. Я думаю концепция подхода у тебя не правильна. Чаще всего если Ajax-скрипт возвращает что-то, что должно изменить страницу, для этых действий должен быть создан специальный контейнер и содержимое должно вставляться в него. sc2r2bey, вот натолкнулся, что по этому поводу скажите? module.php -------------- [php]<? include('config.php'); $data = $db->query('SELECT * FROM guestbook')->asArray(); include('template.html'); ?>[/php] Это просто набор символов... И ничего больше сказать нельзя... Что тут реализуется? |
|
|
sc2r2bey |
21.10.2009, 23:10;
Ответить: sc2r2bey
Сообщение
#9
|
|
это я наткнулся на тему по поводу самописных cms там был поднят вопрос модульности, мог вот код, а остальное от лукавого
-------------------- программирую web и для we |
|
|
ZiTosS |
22.10.2009, 12:25;
Ответить: ZiTosS
Сообщение
#10
|
|
sc2r2bey, да уж это такая супер-пупер модульность, что у меня аж прям слов нету...
|
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое | 5 | CULA | 3397 | 19.12.2023, 18:55 автор: CULA |
|
Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery Разработка сайтов и сервисов под-ключ |
0 | alexey | 1241 | 24.11.2023, 14:46 автор: alexey |
|
Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP) | 56 | qpPeW | 44903 | 19.7.2023, 10:03 автор: qpPeW |
|
Есть спецы по php/laravel? | 3 | Mixatraider | 1889 | 26.5.2023, 20:48 автор: Mixatraider |
|
Опытный PHP\Python разработчик в поиске интересных задач | 6 | daikzlex | 3402 | 25.5.2023, 13:55 автор: daikzlex |
Текстовая версия | Сейчас: 19.4.2024, 7:03 |