Синтаксис

Переменные
Это самая простая вещь в Dwoo. Вам лишь нужно знать имя переменной и вы можете вывести её примерно так: {$имя_переменной}. Например, для вывода переменной с именем "date", надо написать {$date}.

Для доступа к элементам ассоциативного массива используется оператор точка (.). Например, если у вас есть массив article, содержащий элементы с ключами title, author и content, вы можете получить доступ к этим элементом таким образом:

Функции
Dwoo позволяет использовать в шаблонах как плагины-функции, так и обычные функции PHP.

Синтаксис функций достаточно гибкий. Во-первых, можно использовать обычный синтаксис PHP, {upper("привет")}, для вызова функции upper с аргументом "привет". Эта запись выведет "ПРИВЕТ" (функция upper переводит символы в верхний регистр). Для передачи нескольких аргументов их надо разделять запятыми: {function("a", "b")} вызовет функцию function с аргументами a и b.

Выведет:

Вот несколько СЛОВ В ВЕРХНЕМ РЕГИСТРЕ

Второй способ - вызвать функцию с использованием именованных аргументов. Тот же пример что и выше можно записать так: {upper value="привет"}. В этом случае функции явно указывается использовать текст "привет" как значение для аргумента value.

Выведет:

Вот несколько СЛОВ В ВЕРХНЕМ РЕГИСТРЕ

Оба способа имеют свои плюсы и минусы. Первый более краткий и позволяет вам забыть имена аргументов. Второй более гибкий в случае использования комплексных функций с большим количеством аргументов, потому что он не только позволяет не запоминать порядок аргументов, но также пропускать ненужные в конкретном случае аргументы. См. the blocks example.

Модификаторы
Модификаторы - это просто функции, которые могут быть применены к переменным или строкам чтобы их изменить. Для модификаторов нет жёсткого синтаксиса - вы можете их вызывать как обычную функцию (как модификатор upper в примерах выше), так и используя специальный синтаксис: {"привет"|upper}.

Выведет:

топор наоборот будет ропот

Аргументы для модификаторов разбиваются символом ":". Несколько модификаторов может быть последовательно применено к одной строке/переменной:

Выведет:

Р-О-П-О-Т совпадает с Р-О-П-О-Т

Этот пример показывает, что несколько функций применяются от внутренней к внешней, тогда как модификаторы применяются слева на право.

Блоки
Blocks are started like functions, using {blockname(parameter1, parameter2)} or the named parameter syntax, and they are closed with {/blockname}. Unclosed blocks are automatically closed when one of their parent is closed, or at the template's end, however it's better to close them yourselves to be sure they are closed when you want them to be and to avoid any conflict to arise.

prints: foo bar baz qux quuux

The @ Operator
If you use the modifier syntax on an array and prepend the modifier with an @, the modifier will be applied to every element of the array.

For example, the following : would output cd ab as the reverse modifier reversed the array elements order before looping over them.

However, if we do : would output ba dc as with the @, reverse was not applied to the array but to 'ab' and then to 'cd', reversing each character sequence.

Shortcuts
Read more about shortcuts to write templates faster.