Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шаблонизатор - Попкорн! 
:(
    Опции темы
awilum
Дата 7.5.2011, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Open Source Evangeli
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 5.10.2008

Репутация: нет
Всего: нет



user posted image

Решил для своей 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 можно подключить к CodeIgniterhttp://popcorn.template-cms.org/#3
PM MAIL WWW   Вверх
cutwater
Дата 7.5.2011, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: нет
Всего: 10



Велосипед на велосипеде и велосипедом погоняет. 
1. Зачем?

2. Что бросается сразу в глаза: отсутствие хоть какой-нибудь концепции layout, наследования шаблонов, что-либо еще.
или предлагаете все писать корявой логикой на инклюдах?
А какие шаблонизаторы рассматривали прежде чем приступить к написанию своего?

3.
Цитата

{run function()}

Бизнес-логика в шаблонах?

4.
Если убрать все рюшки аля dump, vars, codes в сухом остатке останется:
assign, if, loop, include
Действительно простой шаблонизатор

5.
Различать константы / переменные, а нужно ли?

6.
Документация откровенно паршива.
Цитата

{file 'filename'} - Load file 

Хм... вот любопытно что же автор имел ввиду и какие принципиальные отличия от include?

7.
Пример с variable assigment слегка странен
А должно ли попадать в Result?
Цитата

{assign year '2011'}


8. Лицензия:
GNU GPL 3 License
Поправьте если ошибаюсь в деталях, но с такой лицензией Ваш шаблонизатор в принципе не применим кроме
как к продуктам для внутреннего использования и продуктов под GPL лицензией.

P.S. Исходники не смотрел.

Посмотрел: настройте IDE, у Вас каша с отступами табы и пробелы одновременно. (заметно при tab=8)

Вердикт: поделка, не нужно!

Это сообщение отредактировал(а) cutwater - 7.5.2011, 15:41


--------------------
user posted image
PM MAIL   Вверх
awilum
Дата 7.5.2011, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW   Вверх
awilum
Дата 7.5.2011, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Open Source Evangeli
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 5.10.2008

Репутация: нет
Всего: нет



Цитата

Посмотрел: настройте IDE, у Вас каша с отступами табы и пробелы одновременно. (заметно при tab=8)

Открываю в Sublime text и Notepad++ все нормально. 
PM MAIL WWW   Вверх
cutwater
Дата 7.5.2011, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: нет
Всего: 10



Цитата(awilum @  7.5.2011,  18:32 Найти цитируемый пост)
Открываю в Sublime text и Notepad++ все нормально.  

А Вы таки поставьте размер табуляции != 4.

Цитата(awilum @  7.5.2011,  18:11 Найти цитируемый пост)
да GNU GPL 3 License как и Template CMS

Ну и кому нужна Ваша CMS и шаблонизатор под такой лицензией? А если для себя, так зачем пиариться?

UPD: Даже если для CMS допустимо распространение под GPL (о чем надо бы завести отдельный разговор)
То для шаблонизатора все же такая лицензия является весьма неудобной.

Цитата(awilum @  7.5.2011,  18:11 Найти цитируемый пост)
Посмотрите пример в архиве.

Поведение описано в документации недостаточно полно.
Субъективное мнение: операция сама по себе равнозначная и по сути пользователя не должно волновать что там: шаблон или просто файл.

Речь как раз о том что шаблонизаторов великое множество и Smarty c концептуальной точки зрения далеко не лучший его представитель.
Можете найти тему посвященную проектированию шаблонов.

Прочие рекомендации: Сменить лицензию, сменить sourceforge на github вместе с системой контроля версий, привести таки код к единому виду (либо Tabs либо Spaces) смешивать не хорошо.

Это сообщение отредактировал(а) cutwater - 7.5.2011, 21:10


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 7.5.2011, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



Автору конечно респект и молодец...

Любопытно было бы провести тесты на скорость ... 
Я к примеру люблю Haanga,  имхо лучшее на сей день что можно получить по функционалу и прожорливости к памяти(он оч быстрый и легкий, но есь даже наследие)


--------------------
user posted image
PM MAIL   Вверх
awilum
Дата 7.5.2011, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Open Source Evangeli
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 5.10.2008

Репутация: нет
Всего: нет



Цитата

Если убрать все рюшки аля dump, vars, codes в сухом остатке останется:
assign, if, loop, include
Действительно простой шаблонизатор

хм. на работе проект типа "соц сети". Юзается Smarty. И в шаблонах if, foreach, include ну и еще date_format иногда встречается вот и все. "Действительно простой шаблонизатор" и что ? 

Цитата

Ну и кому нужна Ваша CMS

представьте себе такого рода CMS специально для сайтов визиток, сателлитов, домашних страничек пользуются спросом: http://www.cmsbezmysql.ru/category/vizitki

Цитата

под такой лицензией

да, наверное надо было за денежку отдавать как другие ? 
http://forum.searchengines.ru/showthread.php?t=250959

Цитата

сменить sourceforge на github вместе с системой контроля версий

меня устраивает меркуриал и битбакет: https://bitbucket.org/Awilum/popcorn


Цитата

А если для себя, так зачем пиариться?

Тема создана для фидбека: критика, советы, предложения.
PM MAIL WWW   Вверх
cutwater
Дата 7.5.2011, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: нет
Всего: 10



Цитата(Muerto @  7.5.2011,  20:07 Найти цитируемый пост)
Haanga

Цитата
Django style for PHP


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


Добавлено @ 21:20
Цитата(awilum @  7.5.2011,  20:17 Найти цитируемый пост)
меня устраивает меркуриал и битбакет: https://bitbucket.org/Awilum/popcorn

Ссылку на сайте не видел, мои извинения.

Цитата(awilum @  7.5.2011,  20:17 Найти цитируемый пост)
да, наверное надо было за денежку отдавать как другие ? 

Имеется ввиду, что для конечного продукта GPL является довольно таки удобной лицензией, в отличие от промежуточных продуктов, библиотек, фреймворков, etc.

Это сообщение отредактировал(а) cutwater - 7.5.2011, 21:23


--------------------
user posted image
PM MAIL   Вверх
awilum
Дата 7.5.2011, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Open Source Evangeli
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 5.10.2008

Репутация: нет
Всего: нет



haanga по синтаксису мне напоминает Twig
PM MAIL WWW   Вверх
cutwater
Дата 7.5.2011, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: нет
Всего: 10



Цитата(awilum @  7.5.2011,  20:24 Найти цитируемый пост)
Twig 


Который по синтаксису напоминает Jinja (автор один), который по синтаксису напоминает Django... ну и так далее.
Можно конечно еще заняться вопросом что появилось раньше, однако по дизайну все эти шаблонизаторы примерно похожи концептуально и синтаксически.

Это сообщение отредактировал(а) cutwater - 7.5.2011, 21:28


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 7.5.2011, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



А Haanga напоминает таки Twig или Django

Ток по сравнением с Twig работает в десятки раз быстрей и памяти жрет в десяток раз меньше, а функционал почти такой же  smile 


--------------------
user posted image
PM MAIL   Вверх
awilum
Дата 8.5.2011, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW   Вверх
gcc
Дата 8.5.2011, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



awilum, на perl есть очень мощный шаблонизатор, там вообще как другой язык smile
http://ru.wikipedia.org/wiki/Template_Toolkit
http://template-toolkit.org/
http://www.template-toolkit.ru/
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Libraries | Следующая тема »


 




[ Время генерации скрипта: 0.1612 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.