Тема: Blueberry: философия. А так же про шаблоны, макросинтаксис, модули
Получилось коротко и весьма сумбурно. Но я давно хотел написать и всё никак не получалось. поэтому пусть пока так, чем никак, потом поправлю.
В отличии от предыдущих версий скрипта, где использовались "местные" шаблоны, в новой версии шаблоны "глобальные". Это обусловленно в первую очередь направленностью движка (он больше не новостной). То есть, шаблоны будут на всей странице.
Благодаря работе Tags`ов, можно значительно расширить и упростить HTML, при этом в полную силу работать и с PHP. Tags это такой "альтернативный" синтаксис PHP, но более понятный и более удобный. Другими словами, с помощью Tags можно изменить любой тег (<это_тег />) или его атрибут (<это_тег а_это="атрибут" />), превратив это в функцию и параметры (тег - функция, атрибуты - параметры).
Использовать можно как вместе (some тут это функция):
<some param="ля-ля-ля" />Так и раздельно (тут "расширен" только атрибут password, тег div является не тронутым):
<div password="1234">запароленная запись-пись-пись</div>Для примера далеко ходить не надо. Получать же это и отображать можно просто:
<data src="album">
%{album.name} (%{artist.name})<br />
</data>Скрипт пройдёт по цепочке связей (отношений/релэйшенов) и даст возможность не только получить всё по-человечески, но и сформировать вывод. "По-настоящему" пришлось бы делать много телодвижений, которые мало того что нудные, так ещё и страшные (вы видели как танцуют пьяные люди?).
Слова со знаками процента в начале - макросинтаксис. Вообще, его несколько типов: %name, ${name}, #{name} и %{name}. Первый тип служит для работы с небольшими кусками текста, такими как шаблоны почтовых сообщений или шаблоны перевода. Второй и третий работают во всех шаблонах-дизайна (те самые шаблоны всех страниц), ${} это переменные (php-переменные), #{} - константы (тоже пхпшные). Оба типа можно не только выводить, но и определять (${name = 'Вася'}). Четвёртый тип это алиас для ${tmp.что-то-очень-временное-и-рабочее}, как таковой он используется не в шаблоне, а в некоторых тегах. В отличии от ${}, который виден во всём шаблоне и перебивается или задаётся только пользователем, %{} задать нельзя, и вне своего поля действия работать не будет.
Пример:
${some} работает, а %{album.name} нет.
<data src="album">
%{album.name} сейчас работает и ${some} работает тоже<br />
</data>
${some} и тут работает, а %{album.name} опять не работает.Вы, наверное, обратили внимание на точки в именах. Точки в системе играют важную роль. В ${переменных} они означают ключи массива. Строки <?=$array['key']['anotherKey']; ?> и ${array.key.anotherKey} в шаблонах равноценны. В некоторых функциях - путь. К примеру, в Strawberry 2 есть функция отвечающая за подключение (load(), подключает php-файлы) и функция отвечающая за отображение (show(), подключает html-файлы [шаблоны]). В них как раз и передаются строки с точками.
<? show('sign.in'); ?> или <show src="sign.in" /> написаные в шаблоне выведут шаблон авторизации (папка sign/, файл in.html).