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

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

  • Абырвалг

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

    Spritz 1 октября 2010 г. 0:23, спустя 1 минуту 29 секунд

    так я отрисовал левую часть кольца твоего (то, что было уже сыграно).
  • AlexB

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

    Spritz 1 октября 2010 г. 0:31, спустя 8 минут 13 секунд


    так я отрисовал левую часть кольца твоего (то, что было уже сыграно).
    Да ни хуя, когда чемпионат еще не начался в левой части как и в правой будет все несыгранное.
    Потом слева будет часть сыгранных часть несыгранных, потом в правой. Потом будет везде сыгранные. Кольцо вращается, а не просто слева сыгранные, справо несыгранные.

    Так что цикла тут как минимум четыре - по два варианта в каждой колонке и все бы ничего, но еще вот проблема прибивки к низу возникает и поэтому нужен rowspan.
  • kostyl

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

    Spritz 1 октября 2010 г. 0:27, спустя 23 часа 55 минут 40 секунд

    vasa_c, васяц, можешь еще раз объяснить мысль этой темы на примере AlexB. Я хочу лично твой вариант понять
  • artoodetoo

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

    Spritz 1 октября 2010 г. 0:30, спустя 3 минуты 26 секунд

    я не понял почему в прошедших матчах счет пустой, а в будущих он есть :)
    к постановке задачи это не относится, но все-таки интересно
    ιιlllιlllι унц-унц
  • Абырвалг

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

    Spritz 1 октября 2010 г. 0:31, спустя 56 секунд

    имхо на рисунке стрелка не в ту сторону
  • AlexB

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

    Spritz 1 октября 2010 г. 0:35, спустя 4 минуты 7 секунд


    я не понял почему в прошедших матчах счет пустой, а в будущих он есть :)
    Дизайнер лажанулся, это же просто эскиз,  должно быть наоборот. Он дизайнер - ему сказали два варианта матчей сделать, он сделал. Надо было мне картинку поправить, но я надеялся никто не заметит… )))

    Спустя 66 сек.

    имхо на рисунке стрелка не в ту сторону
    Со стрелками вопрос интересный, если они показывают течение времени, то они правильные, если направление вращения кольца то надо наоборот. Мы решили, что лучше время.
  • kostyl

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

    Spritz 1 октября 2010 г. 0:36, спустя 49 секунд

    AlexB, да, время понятнее как то, это  же календарь…

    Ребята, дело не в коньяке и стрелочках - дело в смысле вопроса васяца!
  • Абырвалг

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

    Spritz 1 октября 2010 г. 1:24, спустя 47 минут 43 секунды

    <?php
    $blocks = array(
    1, 2, 3, 4, 5, 6, 7 // отсортированы по дате, сегодня 3 число (1, 2 - игранные, 3 - сейчас играется, 4-7 - потом)
    )
    /*
    такое гавно должно быть на выходе
    3->* *
    * *<-1
    *
    * *<-7
    */


    {# сколько элементов в диве и какой блок сечас играется #}
    {% set t, now = 4, 3 %}

    <div id="left">
    {% set i = 0 %}
    {% for b in blocks %}
    {% if i < t and b >= now %}
    {{ b }} {# левый блок, не игранные игры + сегодняшняя #}
    {% set i = i + 1 %}
    {% endif %}
    {% endfor %}
    </div>

    <div id="right">
    {% set i = 0 %}
    {% for b in blocks %}
    {% if i < t and b < now %}
    {{ b }} {# правый блок, сыгранные игры #}
    {% set i = i + 1 %}
    {% endif %}
    {% endfor %}

    {% for b in blocks %}
    {% if i < t and b > now %}
    {{ b }} {# правый блок, не игранные игры, "хвост" #}
    {% set i = i + 1 %}
    {% endif %}
    {% endfor %}
    </div>


    еще нужно хвост для левого дива, но мне лень
    Спустя 107 сек.
    ага, и еще хвост правый у меня будет без интервала как бы. Но это наверно можно через css решить
  • AlexB

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

    Spritz 1 октября 2010 г. 1:49, спустя 25 минут 18 секунд

    Во первых, через css это решить сложно, поэтому позволю себе опять напомнить про таблицу с rowspan, которая это решает. Но при этом плохо поддается шаблонизации.
    Во вторых, все циклы идут по массиву в одном направлении, что неверно в принципе. Некоторые части кольца строятся снизу вверх.
    В третьих, уже шаблон превратился в мешанину из сложных условий, а это еще только начало. Что я собственно и хотел показать.
  • artoodetoo

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

    Spritz 1 октября 2010 г. 4:16, спустя 2 часа 26 минут 48 секунд

    нако!
    сделал в полунативном стиле. позже оформлю в какой-нибудь синтаксис :)
    ключ ко всему - функция-хелпер roundSlice($today, $grid), которая режет массив с турнирной сеткой и закольцовывает его

    один турнирный день офомлен в отдельный под-шаблон и инклудится
    лэйаут отдельно, шаблон турнирной сетки найледует от него. вот главный шаблон:

    <?php

    $this->_extend('default-layout');

    list($left, $middle, $right) = roundSlice($today, $grid);

    ?>
    <table class="tournir">
    <?php

    if (!empty($middle)) {
    ?>
    <tr>
    <td colspan="2" id="today">
    <?php
    list($date, $item) = each($middle);
    include $this->_prepare('day');
    ?>
    </td>
    </tr>
    <?php
    }

    $iterator = count($left) > count($right) ? array_keys($left) : array_keys($right);
    foreach ($iterator as $dummy) {
    ?>
    <tr>
    <td>
    <?php
    list($date, $item) = each($left);
    include $this->_prepare('day');
    ?>
    </td>
    <td>
    <?php
    list($date, $item) = each($right);
    include $this->_prepare('day');
    ?>
    </td>
    </tr>
    <?php
    }
    ?>
    </table>


    результат:


    я ничего не оптимизировал до поры, просто заставил это работать
    Спустя 151 сек.
    Шаблонизатор из этой темы: http://pyha.ru/forum/topic/4342.msg92930#msg92930
    Там есть пример прикрутить любой НЕнативный синтаксис.
    1. sport.zip (30)
    ιιlllιlllι унц-унц
  • artoodetoo

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

    Spritz 1 октября 2010 г. 8:50, спустя 4 часа 34 минуты 46 секунд

    сейчас roundSlice() сделан топорно через циклы. можно переделать на функции array_* если будет не лениво

    а вот так выглядит контроллер:


    <?php

    $grid = array(
    strtotime('2010-09-27') => array(
    array('Бостон Брюинз', 'Вашингтон Кэпиталз', '1:4'),
    ),

    strtotime('2010-09-28') => array(
    array('Торонто Мейпл Ливз', 'Монреаль Канадиенс', '2:1'),
    ),

    strtotime('2010-09-29') => array(
    array('Колорадо Эвеланш', 'Сан-Хосе Шаркс', '4:5'),
    ),
    //…
    );

    $data = array(
    'pageTitle' => 'Турнир',
    'today' => strtotime('2010-10-05'),
    'grid' => $grid
    );


    $view = new View();
    $view->render('round-grid', $data);


    вся логика представления в шаблоне представлении. красота!
    ιιlllιlllι унц-унц
  • pissflaps

    Сообщения: 148 Репутация: N Группа: Кто попало

    Spritz 1 октября 2010 г. 8:08, спустя 23 часа 17 минут 15 секунд

    Представлять в хитром виде - задача программиста. Он пишет каркас шаблона, верстальщик потом его разукрашивает.
    Показывай … Ну на бутылку вискаря забиваемся?


    Пожалуйста.
    Фишка в том, что все движется по кругу, и при разных датах таблица формируется по разному.
    Иногда левая и правая колонка содержат одинаковое число дат.
    Иногда разрыв между началом и концом соревнования слева, иногда справа.
    Слабо все в один шаблон засунуть, да еще чтоб он был читаем?
    На Blitz - элементарно.


    Формировать правильный массив с данными нада заранее, а не через жопу, чтобы потом жопа была на шаблоне.
    Данный пример схож по аналогии с выводом древовидного массива?

    Чем-то схоже с темой одного человека как-то
    У меня есть массив, шаблонизатор не позволяет мне производить операции с массивом чтобы он стал древовидным?
    А вот спрашивается нахуя он пытался на шаблоне сделать древовидный массив, когда его нада было подготовить заранее. и рекурсией вывести?!
  • phpdude

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

    Spritz 1 октября 2010 г. 8:21, спустя 12 минут 53 секунды

    pissflaps, логично и трагично
    Сапожник без сапог
  • pissflaps

    Сообщения: 148 Репутация: N Группа: Кто попало

    Spritz 1 октября 2010 г. 8:22, спустя 1 минуту 25 секунд

    phpdude, ну, а хулигули так всё и есть. :))
  • artoodetoo

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

    Spritz 1 октября 2010 г. 8:42, спустя 19 минут 37 секунд

    кто-нибудь видит ЖОПУ в моём примере?
    Спустя 99 сек.
    pissflaps, надо вывести дерево? в твоем исходном массиве достаточно информации о структуре дерева? тогда это можно сделать в шаблоне
    ιιlllιlllι унц-унц

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