ФорумПрограммированиеPHP для идиотов → Нативно-хуетивный шаблонизатор

Нативно-хуетивный шаблонизатор

  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 30 сентября 2010 г. 12:55, спустя 11 минут 26 секунд

    Возможно и не умели, потому что работал даже не с самим блитцом, а с надстройкой над ним.
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 30 сентября 2010 г. 13:07, спустя 12 минут 14 секунд

    Пример на вскидку - списки. Уже не помню подробностей, какие там проблемы были, но в общем.

    Есть списки на сайте - пользователей, групп, пользователей в группе, групп у пользователей и ещё хуча.

    Всё списки структурно одинаковые - табличка, строчки, сверху название, свернуть/развернуть, общее количество элементов, пагинатор.
    Строки таблицы соответствуют элементам списка - номер в списке, менюшка (удалить, пригласить и т.п.)

    А вот остальная структура строк отличается для разных списков - там ФИО пользователя, там название группы, другая специфическая информация.
    А для каждого поля свои навороты, типа по имени можно щёлкнуть, изменить и запрос аяксом на сервер пойдёт.

    Вот приходилось извращаться сильно, не хватало динамического инклюда и ещё много чего.
    А пихать формирование строк в код - приходит верстальщик, а мне для строки в <tr> нужно стиль подправить.
    Спустя 77 сек.
    Ну то есть проблема структур, которые как-бы имеют одинаковый шаблон в общем, а внутри в частностях различаются и эти частности желательно также иметь в шаблонах.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 30 сентября 2010 г. 13:37, спустя 29 минут 31 секунду

    AlexB, если взять предложение Олега, и в так скажем подготовке к выводу в шаблоне, сделать нужную сортировку данных, где в начале будет сегодняшние матчи, а потом по порядку сегодя -1, сегодня +1 и т.д. там где нет - нету + до конца списка в нужную сторону, ну короче понятно. Потом этот список ставиться в обычный цикл уже в непосредственном шаблоне и всё это разруливает и самрти и найтив…
  • AlexB

    Сообщения: 4297 Репутация: N Группа: в ухо

    Spritz 30 сентября 2010 г. 13:41, спустя 4 минуты 24 секунды

    Там есть динамический include
    не вопрос
    {{ include($template) }}
    плюс там есть fetch - блок парсится в переменную, потом она распихивается куда надо. Т.е. типа инклюда, куска из этого же шаблона.

    В общем не вижу проблем. Скорее всего толком не умели юзать.
    Абсолютно уверен, что на блице можно всегда сделать так, что любая часть html будет только в шаблоне. Ни капли в код!!!!
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 30 сентября 2010 г. 13:42, спустя 1 минуту 6 секунд

    внутри в частностях различаются и эти частности желательно также иметь в шаблонах

    я вот типа так и делаю - хелперы шаблона получают от него данные, а потом хелпер может обработать эти данные по своему, подключить другой шаблон и передать туда эти данные, отрендерить шаблон и т.п. Я считаю очень удобно…
  • AlexB

    Сообщения: 4297 Репутация: N Группа: в ухо

    Spritz 30 сентября 2010 г. 13:49, спустя 6 минут 42 секунды


    в непосредственном шаблоне и всё это разруливает и самрти и найтив…
    ну блин, разрули )))))
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 30 сентября 2010 г. 13:53, спустя 4 минуты 7 секунд

    Хватит меня по имени с большой буквы называть, уже второй в этой теме :)
    Спустя 183 сек.
    Ладно, blitz охуенен, AlexB победил, ему бутылка виски, если обещает выпить залпом :)

    Моё же изначальное предложение относится к тем, кто продолжает использовать нативные шаблоны. Типа нативные + добавить ещё по необходимости других шаблонизаторов.
    Спустя 48 сек.
    Я пишу так бессвязно, потому что тороплюсь - а то иногда пишешь, отправляешь, а там уже новые 8 страниц флуда.
  • AlexB

    Сообщения: 4297 Репутация: N Группа: в ухо

    Spritz 30 сентября 2010 г. 13:58, спустя 4 минуты 40 секунд


    и почему за октябрь результаты уже известны, а за сентябрь ещё нет? :)
    дизайнер облажался, должно быть наоборот. мне было лень править, главное принцип.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 30 сентября 2010 г. 15:57, спустя 1 час 59 минут

    тремя циклами это разуливается и сравнением даты с текущей
  • artoodetoo

    Сообщения: 5146 Репутация: N Группа: в ухо

    Spritz 30 сентября 2010 г. 16:00, спустя 2 минуты 52 секунды

    считаю что шаблоны должны быть "строгими". то есть даже если это "натив", должны быть оговорены рамки дозволенного. лучше если эти рамки ограничены синтаксисом языка шаблона.
    AlexB, ничего нереального в твоём примере. простая арифметика. кто сказал, что шаблон не может выполнять арифметических действий? если не может, создаем функции-хелперы.

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

    итого наш шаблонизатор должен уметь крутить циклы и обращаться к функциям-фильтрам.

    ιιlllιlllι унц-унц
  • AlexB

    Сообщения: 4297 Репутация: N Группа: в ухо

    Spritz 30 сентября 2010 г. 16:02, спустя 2 минуты 33 секунды


    тремя циклами это разуливается и сравнением даты с текущей
    Ежу ясно что циклами и ифами. Как шаблон будет выглядеть? Я свой шаблон привел …

    r2d2, тоже самое, я не прошу алгоритм. Все тут люди умные и способны его соорудить. Я предлагаю свести это в единый шаблон, и полюбоваться насколько он будет "красив".
  • Sinkler

    Сообщения: 7956 Репутация: N Группа: в ухо

    Spritz 30 сентября 2010 г. 16:03, спустя 1 минуту 20 секунд

    эстетика на пiха.ру
  • artoodetoo

    Сообщения: 5146 Репутация: N Группа: в ухо

    Spritz 30 сентября 2010 г. 16:07, спустя 3 минуты 9 секунд

    AlexB, ладно. только сейчас спать хочется, завтра покажу.
    ιιlllιlllι унц-унц
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 30 сентября 2010 г. 16:15, спустя 8 минут 14 секунд

    пиздец.

    $blocks = array(
     array(
       'date' => '28.09.10',
       'content' => '<div …' // распарсили через другой шаблон
     ), array (
       'date' => '29.09.10' // сеня
     ), array(
       'date' => '30.09.10'
     )
    )
    $timestamp = time();


    <!– вчера –>
    {% for block in blocks %}
     {% if block.date|date('U') < timestamp %}
       <div class="yesterday">
         {{ block.content|safe }}
       </div>
     {% endif %}
    {% endfor %}


    да, передавать time() в шаблон несколько некрасиво. Но можно сделать какой-то тег свой или фильтр. Кроме того, тебе может не понравиться, что я передаю в шаблон отрендеренные данные. Окей, можно сделать свой тег "render", которому будем скармливать шаблон и даные
    Спустя 209 сек.
    Окей, можно сделать свой тег "render", которому будем скармливать шаблон и даные

    давно не читал доку, это все уже есть искаропки
    {% include 'foo' with ['foo': 'bar'] %}
  • AlexB

    Сообщения: 4297 Репутация: N Группа: в ухо

    Spritz 30 сентября 2010 г. 16:21, спустя 6 минут 20 секунд

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

Пожалуйста, авторизуйтесь, чтобы написать комментарий!