|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
|
awilum |
|
|||
Open Source Evangeli Профиль Группа: Участник Сообщений: 54 Регистрация: 5.10.2008 Репутация: нет Всего: нет |
Решил для своей CMS-ки написать маленький и быстрый шаблонизатор Popcorn! Собственно выкладываю в паблик. Выслушаю критику, советы и предложения ) Встроенные шаблонные теги: ----------------------------------------------------------------- {echo $var} - Вывести значение переменной. {var name $var2} - Создать локальную переменную. Видимость только в текущем в шаблоне. Если нужно передать во вложенный то заюзать {assign} {const name $value} - Создать константу {file 'filename'} - Загрузить файл {run function()} - Запустить php функцию {if expr} {else} {elseif expr} {/if} - Конструкция IF {loop $mas as $item}{/loop} - Конструкция LOOP {loop $mas as $key => $item}{/loop} {codes} - Показать все зарегистрированные шаблонные теги/коды {vars} - Показать все созданные шаблонные переменные {dump $var} - Показать информацию о переменной {assign var 'value'} or {assign var $value} - Создать глобальную переменную. Она будет видна в подключаемых шаблонах {include 'template_name'} - Подключить шаблон Примеры, документацию и последнюю версию можно посмотреть на офф. сайте: http://popcorn.template-cms.org/ Так же Popcorn можно подключить к CodeIgniter: http://popcorn.template-cms.org/#3 |
|||
|
||||
cutwater |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: нет Всего: 10 |
Велосипед на велосипеде и велосипедом погоняет.
1. Зачем? 2. Что бросается сразу в глаза: отсутствие хоть какой-нибудь концепции layout, наследования шаблонов, что-либо еще. или предлагаете все писать корявой логикой на инклюдах? А какие шаблонизаторы рассматривали прежде чем приступить к написанию своего? 3.
Бизнес-логика в шаблонах? 4. Если убрать все рюшки аля dump, vars, codes в сухом остатке останется: assign, if, loop, include Действительно простой шаблонизатор 5. Различать константы / переменные, а нужно ли? 6. Документация откровенно паршива.
Хм... вот любопытно что же автор имел ввиду и какие принципиальные отличия от include? 7. Пример с variable assigment слегка странен А должно ли попадать в Result?
8. Лицензия: GNU GPL 3 License Поправьте если ошибаюсь в деталях, но с такой лицензией Ваш шаблонизатор в принципе не применим кроме как к продуктам для внутреннего использования и продуктов под GPL лицензией. P.S. Исходники не смотрел. Посмотрел: настройте IDE, у Вас каша с отступами табы и пробелы одновременно. (заметно при tab=8) Вердикт: поделка, не нужно! Это сообщение отредактировал(а) cutwater - 7.5.2011, 15:41 |
||||||
|
|||||||
awilum |
|
|||
Open Source Evangeli Профиль Группа: Участник Сообщений: 54 Регистрация: 5.10.2008 Репутация: нет Всего: нет |
>1. Зачем?
1) Мне не нужен в моей cms Smarty(хоть и делал несколько проектов с ним) из за его прожорливости 2) Не использовать в своей CMS чужую либу, когда могу написать свою и по проще. Есть все что надо, хоть и это assign, if, loop, include хм а что еще ? все это же юзаю и в смарти. >А какие шаблонизаторы рассматривали прежде чем приступить к написанию своего? Я имею опыт работы с Smarty и XTemplate. Но написал этот. смотреть пункт 1) и 2) >Бизнес-логика в шаблонах? да знаю. чувак ныл мол а как же ему запустить функцию.. убрать не проблема эту рюшку. спасибо. >Различать константы / переменные, а нужно ли? {var name $var2} - Assign local template variable {const name $value} - Assign constant {assign var 'value'} or {assign var $value} - Assign global variable да иногда надо временные переменные а если надо передать в дочерний шаблон {assign} но не часто такое... >Хм... вот любопытно что же автор имел ввиду и какие принципиальные отличия от include? {file} - загружает просто html файл не парсит и не компилирует. {include} - выполняет draw() и если временные {var} {const} в шаблоне были {assign} то они попадут в этот дочерний. Ив подключенный шаблон попадут те переменные что были зарегистрированы в контроллере(приложении). Посмотрите пример в архиве. >GNU GPL 3 License да GNU GPL 3 License как и Template CMS Это сообщение отредактировал(а) awilum - 7.5.2011, 19:12 |
|||
|
||||
awilum |
|
|||
Open Source Evangeli Профиль Группа: Участник Сообщений: 54 Регистрация: 5.10.2008 Репутация: нет Всего: нет |
Открываю в Sublime text и Notepad++ все нормально. |
|||
|
||||
cutwater |
|
|||
Опытный Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: нет Всего: 10 |
А Вы таки поставьте размер табуляции != 4. Ну и кому нужна Ваша CMS и шаблонизатор под такой лицензией? А если для себя, так зачем пиариться? UPD: Даже если для CMS допустимо распространение под GPL (о чем надо бы завести отдельный разговор) То для шаблонизатора все же такая лицензия является весьма неудобной. Поведение описано в документации недостаточно полно. Субъективное мнение: операция сама по себе равнозначная и по сути пользователя не должно волновать что там: шаблон или просто файл. Речь как раз о том что шаблонизаторов великое множество и Smarty c концептуальной точки зрения далеко не лучший его представитель. Можете найти тему посвященную проектированию шаблонов. Прочие рекомендации: Сменить лицензию, сменить sourceforge на github вместе с системой контроля версий, привести таки код к единому виду (либо Tabs либо Spaces) смешивать не хорошо. Это сообщение отредактировал(а) cutwater - 7.5.2011, 21:10 |
|||
|
||||
Muerto |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: нет Всего: 4 |
Автору конечно респект и молодец...
Любопытно было бы провести тесты на скорость ... Я к примеру люблю Haanga, имхо лучшее на сей день что можно получить по функционалу и прожорливости к памяти(он оч быстрый и легкий, но есь даже наследие) |
|||
|
||||
awilum |
|
||||||||||
Open Source Evangeli Профиль Группа: Участник Сообщений: 54 Регистрация: 5.10.2008 Репутация: нет Всего: нет |
хм. на работе проект типа "соц сети". Юзается Smarty. И в шаблонах if, foreach, include ну и еще date_format иногда встречается вот и все. "Действительно простой шаблонизатор" и что ?
представьте себе такого рода CMS специально для сайтов визиток, сателлитов, домашних страничек пользуются спросом: http://www.cmsbezmysql.ru/category/vizitki
да, наверное надо было за денежку отдавать как другие ? http://forum.searchengines.ru/showthread.php?t=250959
меня устраивает меркуриал и битбакет: https://bitbucket.org/Awilum/popcorn
Тема создана для фидбека: критика, советы, предложения. |
||||||||||
|
|||||||||||
cutwater |
|
||||
Опытный Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: нет Всего: 10 |
Кстати что характерно, все более менее удачные шаблонизаторы представляют собой кальку с джанги. Небольшой камень в ваш огород господа. Как-нибудь можно пофлеймить на тему. Добавлено @ 21:20
Ссылку на сайте не видел, мои извинения. Имеется ввиду, что для конечного продукта GPL является довольно таки удобной лицензией, в отличие от промежуточных продуктов, библиотек, фреймворков, etc. Это сообщение отредактировал(а) cutwater - 7.5.2011, 21:23 |
||||
|
|||||
awilum |
|
|||
Open Source Evangeli Профиль Группа: Участник Сообщений: 54 Регистрация: 5.10.2008 Репутация: нет Всего: нет |
haanga по синтаксису мне напоминает Twig
|
|||
|
||||
cutwater |
|
|||
Опытный Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: нет Всего: 10 |
Который по синтаксису напоминает Jinja (автор один), который по синтаксису напоминает Django... ну и так далее. Можно конечно еще заняться вопросом что появилось раньше, однако по дизайну все эти шаблонизаторы примерно похожи концептуально и синтаксически. Это сообщение отредактировал(а) cutwater - 7.5.2011, 21:28 |
|||
|
||||
Muerto |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: нет Всего: 4 |
А Haanga напоминает таки Twig или Django
Ток по сравнением с Twig работает в десятки раз быстрей и памяти жрет в десяток раз меньше, а функционал почти такой же |
|||
|
||||
awilum |
|
|||
Open Source Evangeli Профиль Группа: Участник Сообщений: 54 Регистрация: 5.10.2008 Репутация: нет Всего: нет |
Сделал снипеты для Sublime Text
@@ - {@ $var} @echo - {echo $var} @if - {if $var} {/if} @ifelse - {if $var} {else} {/if} @ifelseif - {if $var} {elseif $var} {/if} @loop - {loop $key as $item} {/loop} @var - {var name $var2} @const - {const name $value} @assign - {assign var $value} @include - {include 'template_name'} @file - {file 'filename'} @run - {run function()} @vars - {vars} @codes - {codes} @dump - {dump $var} Скачать: popcorn.zip Установка: Распаковать в папку Sublime Text\Packages\User Это сообщение отредактировал(а) awilum - 8.5.2011, 00:44 |
|||
|
||||
gcc |
|
|||
Агент алкомафии Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
awilum, на perl есть очень мощный шаблонизатор, там вообще как другой язык
http://ru.wikipedia.org/wiki/Template_Toolkit http://template-toolkit.org/ http://www.template-toolkit.ru/ |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Libraries | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |