Биллинговая система Nodeny

Главная категория => Разработка => Тема начата: Efendy от 09 Мая 2012, 23:44:58



Название: Шаблонизатор
Отправлено: Efendy от 09 Мая 2012, 23:44:58
Есть одна не очень приятная вещь в биллинге - оформление формируется в коде. Обычно пофик, но иногда удобней было бы шаблон поместить в файл - легче менять дизайн.

Я решил дать вам шаблонизатор из 52й версии. За основу взят джанговский формат. Он не такой навороченный и поддерживает только основные фичи, например:

Код:
 <div >{{ data1 }}</div>
 {% if made_msg %}<div class='{{made_msg_class}}'>{{made_msg}}</div>{% endif %}
 {% for ip in ips %}
    <tr> <td>Ip</td> <td>{{ip.ip}}</td> </tr>
 {% endfor %}

Т.е. переменные, условия, циклы. Условия слегка могут отличаться, например, регулярные выражения:

Код:
{% if ip.ip =~ /^10.100.100/ %} Yes! {% endif %}

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

Пример вызова:

Код:
%param = (
      title => 'заголовок',
      ips = [ { ip => '10.100.0.1' },  { ip => '10.100.0.2' } ],
);
print tmpl('test', %param);

См. прикрепление. Запускайте файл с консоли и подсовывайте ему  test.html в том же каталоге, что и он.

Как его прикрутить к текущему NoDeny - это сами придумайте кто-нибудь... я думаю труда не составит