Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Шаблонизатор shellNet v 1.7
Форумы портала PHP.SU » PHP » Пользовательские функции » Шаблонизатор shellNet v 1.7

Страниц (1): [1]
 

1. Microteam - 05 Декабря, 2011 - 13:27:22 - перейти к сообщению
Всем доброе время суток, наконец-то я написал свой шаблонизатор, и решил поделиться с вами. Он ничем не хуже Smarty.

У него тоже есть свой мини-язык (как у всех шаблонизаторов).

Шаблонизатор тоже знает что такое:
-циклы
-условия
-переменные
-массивы
-подключение других шаблонов.

Ну единственный недостаток он не умеет кэшировать шаблоны, но в следующей версии я это исправлю. Или можете подправить сами.

Ну немного слов про мини-язык шаблонизатора.
Когда я создавал, шаблонизатор я не стал изобретать заново велосипед, делая непонятный мини-язык.
{if 'переменная'} код {else} код {endif} это конструкция условия. ещё можно без else
{if 'переменная'} код {endif}

Ну как есть условие с отрицанием:
{ifn 'переменная'} код {else} код {endif}

Ещё есть переменные они имеют вид: {перменная}
Ну в этой версии есть ещё и массивы: они имеют такой вид {массив#индекс}

Есть ещё цикл пока тока 1 в стиле: {foreach='массив' to='его индексы'} {endforeach}

А также я не забыл про инклюд (подключение других файлов шаблона в свой).
{include='файл.tpl'}

Ну про мини-язык я сказал все что хотел...

В архиве есть пример по использованию.

Вот ссылка: http://get[dot]microteamdev[dot]net/down[dot][dot][dot]hell_net_v17[dot]zip

Ну вообщем строго не судите, писал шаблонизатор я на PHP естественно, а отладку производил на денвере.
2. DlTA - 05 Декабря, 2011 - 13:38:55 - перейти к сообщению
как гдето было сказано "нафига делать шаблонизатор на шаблонизаторе"?!
3. Самогонщик - 05 Декабря, 2011 - 13:43:18 - перейти к сообщению
DlTA пишет:
как гдето было сказано "нафига делать шаблонизатор на шаблонизаторе"?!
Чтобы упростить себе жизнь в плане поддержки Улыбка

str_ireplace - подход не плох, ровно до тех порка пока не нужно выполнить тонны таких замен, например вывод комментариев хабра.
4. Microteam - 05 Декабря, 2011 - 13:46:27 - перейти к сообщению
DlTA пишет:
как гдето было сказано "нафига делать шаблонизатор на шаблонизаторе"?!


Я знаю что php сам явлется неплохим шаблонизатором, но он не очень-то хороший. Чтобы верстальщику сверстать шаблон ему будут нужны начальные знания php, но тем не менее пропустил где нибудь точку с запятой, то всё весь сайт не пашет. Вот для этого пишут свой шаблонизатор
(Добавление)
Самогонщик пишет:
str_ireplace - подход не плох, ровно до тех порка пока не нужно выполнить тонны таких замен, например вывод комментариев хабра.


Предлагаете использовать просто str_replace? Однако
тогда названия переменных будут регистрозависимыми
5. DlTA - 05 Декабря, 2011 - 13:48:07 - перейти к сообщению
Microteam пишет:
Чтобы верстальщику сверстать шаблон ему будут нужны начальные знания php
на это тоже был ответ "накой такие верстальщики"
6. Самогонщик - 05 Декабря, 2011 - 13:55:05 - перейти к сообщению
вообще не использовать replace
7. Microteam - 05 Декабря, 2011 - 13:56:30 - перейти к сообщению
Самогонщик пишет:
вообще не использовать replace


Ниндзя ????

А как не использовать?

Я вот думаю, если кэшировать каждую страницу... так нагрузка существенно уменьшится...
8. Самогонщик - 05 Декабря, 2011 - 14:02:12 - перейти к сообщению
Компилирование шаблонов. Свои наработки резкому рендеру (быстрее чистого пхп, ага) могу показать вечером.
9. Microteam - 05 Декабря, 2011 - 14:03:54 - перейти к сообщению
Самогонщик пишет:
Компилирование шаблонов. Свои наработки резкому рендеру (быстрее чистого пхп, ага) могу показать вечером.

Ааа я вас немного понимаю, т.е это типа хэша?))) Покажите пожааалуйста)))) Как это делать))) Улыбка
10. Мелкий - 05 Декабря, 2011 - 14:08:20 - перейти к сообщению

Самогонщик пишет:
Чтобы усложнить себе жизнь в плане поддержки

fixed
Но не холиварим, нет Язычок


Microteam пишет:
Чтобы верстальщику сверстать шаблон ему будут нужны начальные знания php

На моей практике верстальщики не натягивают шаблоны, этим занимаются программист, которому от верстальщика приходит вёрстка страницы.
И в случае мета-языка вероятность поломать весь вид шаблона - та же.

Но не холиварим, так что умолкаю Ниндзя
11. Самогонщик - 05 Декабря, 2011 - 14:12:00 - перейти к сообщению
Мну нужно внимательнее исходник перечитать. Если у вас есть циклы, значит есть и компиляция. Тут я загнался.

Имея на руках подобный шаблонизатор мне пришлось решить следующие проблемы:
1. объявление функции в шаблоне.
2. быстрый вызов другого шаблона.
3. скорее всего что-то ещё.

Т.е.
1. Если объявить в шаблоне функцию, то его нельзя будет подключить повторно.
2. Если много раз подключить шаблон, то на каждое подключение потеряем по микросекунде. Тысяча комментов - 1 секунда.
12. Microteam - 05 Декабря, 2011 - 14:19:08 - перейти к сообщению
Самогонщик пишет:
Мну нужно внимательнее исходник перечитать. Если у вас есть циклы, значит есть и компиляция. Тут я загнался.

Имея на руках подобный шаблонизатор мне пришлось решить следующие проблемы:
1. объявление функции в шаблоне.
2. быстрый вызов другого шаблона.
3. скорее всего что-то ещё.

Т.е.
1. Если объявить в шаблоне функцию, то его нельзя будет подключить повторно.
2. Если много раз подключить шаблон, то на каждое подключение потеряем по микросекунде. Тысяча комментов - 1 секунда.


Это вы точно сказали, не отрицаю. Но надо это исправлять, а что ж мне делать с этим всем, и не использовать replace. Это уже магия.) Радость
13. Самогонщик - 05 Декабря, 2011 - 16:21:14 - перейти к сообщению
Если я правильно понял код, то там много плохого форматирования, громких заявлений, стилистических ошибок и мало комментариев. А ещё он работает как интерпретатор шаблона.

Я допиливал шаблонизатор попкорн, хотел связаться с автором, но так и не ответил.
Суть: мне нужны были функции в шаблонах (рекурсивный вывод) и микрошаблоны (плоть до оформления одной ссылки).

Т.к. шаблон компилируемый, то нужно было перед его смелым использованием проверить, существует ли откомпилированная версия. Сначала я хотел не делать таких проверок, а компилить все шаблоны разом при их обновлении, но передумал, исключительно из-за того, что можно накосячить.

Для решения проблемы добавления функций в шаблон нужно было верь код, который не относится к этим функциям, обернуть в ещё одну функции. Оборачивание производилось автоматически, и такой функции выдавалось зубодробительное имя. Но другие функции шаблона засоряли глобальное пространство имён.

Тогда я обернул все функции ещё и в класс с зубодробительным именем, что за одно решило и вторую проблему: перед тем как вызывать функцию из другого шаблона производилась проверка на загруженность в память класса соответствующего этому шаблону. Если класса не было, то производилась проверка существования откомпилированного шаблона и его загрузка загрузка, а если откомпилированного шаблона, то он компилился.

Так каждый шаблон компилится ровно 1 раз при первом обращении после очистки кеша. И при генерации страницы проверка существования необходимых откомпилированных шаблонов производится не более 1 раза для каждого шаблона.

Как то так, если чего не понятно, спрашивайте.
14. Microteam - 05 Декабря, 2011 - 16:37:37 - перейти к сообщению
Ну у меня тоже такая идея была, кэшировать шаблоны. Но надо уметь кэшировать, ото я встречал умельцев весь сайт кэшировать, после чего у них ничего не меняется. Попробуем)
15. PATCH - 27 Декабря, 2011 - 04:32:39 - перейти к сообщению
Microteam пишет:
Ну у меня тоже такая идея была, кэшировать шаблоны. Но надо уметь кэшировать, ото я встречал умельцев весь сайт кэшировать, после чего у них ничего не меняется. Попробуем)
кстати вопрос для знатоков) а что если использовать кеширование всего сайта + технологию AJAX )

 

Powered by ExBB FM 1.0 RC1