Forumlar / National / Russian / Шаблонизатор

Macik
#13957 2009-07-09 22:26
В общем согласен.
Хотя логика в блочном виде как сейчас не менее громоздка чем callback-функции.
Отдельного плагина на каждый случай не потребуется - достаточно описать класс с минимальным и достаточным набором callback функций.
Верстальщику вообще практически ничего объяснять не надо - надо показать 1 пример и все будет понятно.

Вот конкретика и примеры:
Вместо вот этого
<!-- IF {PAGE_DESC}== "" -->
Описание страницы пустое.
<!-- ENDIF -->

Можно будет писать так:
{PAGE_DESC|IS_NULL('Описание страницы пустое.')}

Все что нужно для этого - создать в системе дочерний класс:
class XT extends XTemplate {
  // функция проверки на предмет присвоено ли тэгу значение
  public function IS_NULL ($tag,$str) {
    // $tag - тело тэга с уже присвоеным значением
    // $str - строка, которую необходимо вывести если тег пустой
    if ($tag=='') {return $str;} else {return $tag;}
  }
}

Аналогичным образом можно реализовать любое другое условие.
Из плюсов такого подхода:
1. Мы не трогаем исходный класс;
2. Никаких отдельных плагинов - один раз описываем в системе класс и прописываем необходимую функциональность;
3. Экономим на размерах шаблона и соответственно меньше шансов допустить в шаблоне ошибку/опечатку.

Как дополнение:

В своем проекте пытаюсь реализовать "прозрачную" (более абстрактную) для верстальщиков систему интерфейса.

Сейчас по сути в шаблонах огромное количество HTML кода, и при том программно зависимого, как например:
<form action="{PAGEADD_FORM_SEND}" method="post" name="newpage" enctype="multipart/form-data">
...
<form>
в таком случае дизайнер/верстальщик должен знать что указать в параметрах action, mothod, name, и т.п.

Идея в том, что бы абстрагироваться от этого. Дизайнер указывает в шаблоне только ключевые Тэги:
<!-- BEGIN: MAIN -->
Форма регистрации:
{FORM_LOGIN}
<!-- END: MAIN -->
<!-- BEGIN: FORM_LOGIN -->
Введите свои данные:
Login: {INPUT_USER_LOG}
Password: {INPUT_USER_PASS}
{BUTTON_LOGIN_SEND}
{SOME_TEXT}
<!-- END: FORM_LOGIN -->

Задача программиста договориться с дизайнером о наборе тегов для конкретной формы.
Затем проинициализировать структуру данных, которая задаст парамертры конкретных элементов.
Далее вызвать автоматический обработчик, который уже на основании заполненых данных и на основании названия тегов решит что и как парсить.
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Bu gönderi Macik tarafından düzenlendi (2009-07-09 22:57, 15 yıllar önce)