![]() |
Модераторы: Illuminaty |
![]() ![]() ![]() |
|
Master |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: нет Всего: 10 |
Вот написал свой первый парсер шаблонов на PHP!
Зацените: есть 3 типа данных 1) HTML текст 2) PHP сценарий 3) Обычный текст
Есть предложения по улутшению? -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
||||
|
|||||
Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: нет Всего: 10 |
Изменил регулярное выражение.
теперь есть возможность ставить не интерпритируемые символы {} предворяя их слешем. -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: нет Всего: 232 |
Master, а что насчёт включения (inclusion) одного шаблона другим ?
-------------------- ![]() |
|||
|
||||
Master |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: нет Всего: 10 |
Добавил обработку включения подшаблонов.
Для их вызова используется синтаксис: {include:путь_к_файлу} Версия Master'S^E 1.1 выглядит так:
сейчас думаю следует ли заморачиватся над обработкой условий и циклов или все-таки лучше оставить решение этой проблемы на синтаксис PHP. Хотя например построение менюшки в виде:
выглядит довольно симпатично и мы отделяем PHP от HTML практически полностью... -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
||||
|
|||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: нет Всего: 73 |
Даешь циклы в TPL!
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: нет Всего: 22 |
Iz@top
Master даешь ((PHP в HTML) в PHP) и все это в HTML!!!! |
|||
|
||||
Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: нет Всего: 10 |
чего чего? Я вот думаю все же оставить так и не изобретать велосипеда... однако хочу добавить такую штуку как include_eval, которая позволит выполнять php шаблоны как код и затем передовать ![]() -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: нет Всего: 10 |
Теперь класс может обрабатывать включение исполняемого шаблона:
-------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: нет Всего: 10 |
Усовершенствованая версия шаблона:
Много всяких фишок добавил. Все в коментариях перед функциями. Сейчас перехожу на использование register_globals off т.к. своими глазами обнаружил проблему. Данные из $_GET['var'] читаются из класса нормально в то время как $var даже при включенов рг не читаются из класса без импорта во внутренний объект. Здесь (в шаблонах) явно просматривается возможность подрубания альтернативных скриптом и чтобы все работало корректно они должны быть написаны с рг офф. Оценивайте сами:
-------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: нет Всего: 10 |
Сейчас вот столкнулся с проблемой... если парсится шаблон и в нем есть {text-decoration:none} (описание стиля), то интерпритатор вызывает ошибку не найдя метод text-decoration...
и сейчас либо: 1) пофиксить баг указав иной синтаксис шаблона... например {%mt:value%} 2) расчитывать на сообразительность кодера... в том, что он вынетет стили за пределы шаблона. -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: нет Всего: 73 |
Master, предлагаю использовать изменяемый синтаксис шаблона. например в моем классе для обработки шаблонов есть такие вот переменные - $this->stag = "<%"; и $this->etag = "%>";. Очень удобно. А для циклов иные - $this->loop_stag = "<#";, и $this->loop_etag = "#>";.
![]() ![]() Добавлено @ 23:39 Вообще ни чего классик получился, но что то мне вот не нравится preg_replace_callback ![]() Мастер, ждем когда добавишь возможность обработки циклов. Я например в своих проектах в шаблонах очень часто их использую, очень полезно при построении прайс-листа, новостей и т.п. PS Если интересно, могу кинуть сюда свой класс для парсинга шаблонов ![]() ![]() -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: нет Всего: 10 |
Iz@top
я сейчас не особо тороплюсь делать циклы... может позже. сейчас у меня трабл с парсингом... потом я хочу сделать сохранение ошибок в массив и выводить в самом конце например и ещё сохранять в лог и ещё определять строку шаблона в которой написан не корректный интерпритатор. потом думаю организовать выборку шаблонов из БД. Добавлено @ 09:05 а идея с $this->tag мне пондравилась. -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: нет Всего: 10 |
-------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: нет Всего: 73 |
Master, сенкс. Я много нового узнал... полез переделывать свой движок для парсинга шаблонов
![]() Добавлено @ 22:15 И еще, я тут прикалывался, точнее не совсем прикалывался, я делал отлов в шаблоне неотпарсенных %констант%, и заменял на предупреждение при выставлении соответствующей функции в true. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Веб-разработка, идеи, проектирование" | |
|
1. Прежде чем поучаствовать в дискуссиях, пожалуйста, перечитайте правила нашего форума. Воспользуйтесь поиском прежде чем создавать новую тему, возможно, Ваш вопрос уже обсуждают. Модератор имеет право удалять или обьединять дублирующиеся темы. 2. В этом разделе проводится обсуждение дизайна готовых сайтов, рабочих web-проектов, web-макетов, а также сами идеи и перспективы ресурсов. 3. Обсуждение отдельных элементов (логотипов, баннеров, анимации и т.п.) проводится здесь 4. В разделе запрещается а) предлагать на обсуждение форумы, чаты, гостевые книги, имеющие стандартный движок без собственного дизайнерского оформления; б) рекламировать какой-либо проект; в) предлагать купить web-проект, работу, модераторство, зарегистрироваться в разделах web-ресурса; г) спрашивать о возможной стоимости проекта. Указанные сообщения будут удаляться без предупреждения(!) 5. При создании новой темы (обсуждение конкретного ресурса) необходимо указать: в названии темы - название вашего проекта, в описании темы - адрес, в топике - вопрос и ссылку 6. Все сообщения, касаемые критики сайта, не содержащие какие-либо собственные предложения будут удаляться! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Illuminaty, dr.ZmeY. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Стартапы, проекты, идеи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |