Форум → Программирование → PHP для идиотов → Нативно-хуетивный шаблонизатор
Нативно-хуетивный шаблонизатор
Страницы: ← Предыдущая страница • Следующая страница →
-
1 октября 2010 г. 8:43, спустя 1 минуту 43 секунды
artoodetoo, я бы тебя как дизайнер-верстальщик послал тебя нахуй с таким шаблоном.Спустя 78 сек.artoodetoo, тогда нахуя вообще говорить о понятии шаблонизации? -
1 октября 2010 г. 8:48, спустя 4 минуты 54 секунды
преобразование данных к удобному для вывода представлению — задача представления.
главное чтобы информации было достаточно, © закон сохранения дерьма в природеСпустя 236 сек.у меня нет понятия "шаблонизации", мы с тобой с разных планет походу
взгляни на мой пример: шаблон как таковой не заморачивается закруткой ячеек по кругу. он просто выдает двухколоночную таблицу. НО в хелпере исходные данные переставляются местами так, чтобы создавалась нужная иллюзия. хелпер это часть представления, так же как шаблон часть представления ))) задача верстальщика сделать разметку и стили для таблички, а программер дает функцию-хелпер. усёк?ιιlllιlllι унц-унц -
1 октября 2010 г. 8:52, спустя 4 минуты 11 секунд
По мне нормальный шаблон это шаблон грубо такого формата:
Лего читабелен / изменяем.<html>
<title>#TITLE#</title>
<body>
<div id="today">
{foreach key=key item=n from=$array_today}
<div>{n.name}</div>
{/foreach}
</div>
<div id="yesterday">
{foreach key=key item=n from=$array_yesterday}
<div>{n.name}</div>
{/foreach}
</div>
</body>
</html>Спустя 109 сек.Ладно чё я спорю, у каждого свой подход, но по мне мешать php с представлением данных - маразм полнейший. -
1 октября 2010 г. 9:00, спустя 7 минут 37 секунд
молодец. теперь вынеси стопудово повторяющуюся часть для всехстраничек
<html>
<title>#TITLE#</title>
<body>
..
</body>
</html>
в отдельный лэйаут
теперь заметь, что текст внутри каждого foreach тоже повторяется — вынеси его в отдельный блок и получишь почти мой шаблон )))
Спустя 182 сек.мой подход — не суть важно как писать
<?php foreach ?>
или
{{foreach}}
главное чтобы весь вывод был отдельно от добычи данных и проверки полномочийιιlllιlllι унц-унц -
1 октября 2010 г. 10:35, спустя 1 час 34 минуты 35 секунд
Формировать правильный массив с данными нада заранее, а не через жопу, чтобы потом жопа была на шаблоне.
а завтра тебя попросят вывести иначе эту сетку, и ты опять в контроллер полезешь?) -
1 октября 2010 г. 10:37, спустя 2 минуты 15 секунд
Абырвалг, пздц ребят. шаблон для того чтобы выносить на него данные, а не для того чтобы извлекать из базы данные /обрабатывать и выводить их тудаже.
Вы мне ща пытаетесь доказать схему, где сплю там и сру. -
1 октября 2010 г. 10:42, спустя 5 минут 29 секунд
извлекли данные из базы/носкл и передали в шаблон. А там ебись как хош, но выведи как нужно -
1 октября 2010 г. 11:10, спустя 27 минут 31 секунду
artoodetoo, я тут тебя поддерживаю - запиздячить в контроллере или в каком-то посреднике-хелпере половину обработки и пошло оно все в хуй.
Абырвалг, а куле и не полезть в контроллер, если нужно "завтра" поменять вывод? Ведь это индивидуальная и не стандартная фишка, и делают её в 99% случаев один раз и навсегда. А ежели делать что-то вечно меняющееся, то… то один хуй что в шаблоне будет каша, что в контроллере. А уж тем-более однохуйственно где (в каком из файлов, а точнее даже как именно он будет называться) нужно будет эти данные изменить.
п.с. А вот по вопросу Вася_ц, то думаю таки не особо круто будет делать "двойную" обработку шаблонов, так как в большинстве случае шаблон представляет из себя простенькую структуру вывода, где по сути никаких пыхо-функций внутри не задействовано (кроме банальных "if/else") и нахуй лишний раз нагружать систему. Но, если у проекта почти все данные выводяться "житрожопо", то вполне возможно что смысл таки есть. -
1 октября 2010 г. 12:19, спустя 1 час 8 минут 42 секунды
artoodetoo, респект, конечно, ща я погоняю и посмотрю внимательней твой пример.
Но все-таки на вскидку, мне кажется, что вы все совершаетет одну ошибку.
А именно исходите из прадигмы, что для шаблона достаточно разделить массив на несколько кусков и каждый кусок передать в свою часть шаблона.
В идеальном мире это так, а вот в реально не совсем.
Ибо HTML так устроен, что для нормального отображения мало иметь куски данных. Надо еще отрендерить то, что между этими кусками, а оно зависит от того какого они размера. -
1 октября 2010 г. 12:43, спустя 24 минуты 5 секунд
А вообще, мне понравилось решение. Если бы высота контента каждого дня была бы одинаковой, то вообще было бы отлично. Blitz, конечно круче, но бутылку вискаря привезу, разопьем … только приезжай на пыхослет. ))))) -
1 октября 2010 г. 12:46, спустя 3 минуты
На картинке, показал красным, где вылазят из-за описанного выше огрехи.
И зеленым, как сформировать таблицу, чтоб их не было. -
1 октября 2010 г. 12:52, спустя 6 минут 44 секунды
погоняй, может быть я не настолько неправ ;)
"на мой глаз" достаточно выровнять так, чтобы разница между правой и левой колонкой была не более одного дня.
ещё чуть-чуть улучшить можно навернув еще один уровень TD: левую и правую колонки целиком подравнять через vertical-align: middle.
это уже чисто стилистические ухищрения, я не заморачивался настолько глубоко.
поздно ответил :)
да, с разновысотными днями не очень красивоιιlllιlllι унц-унц -
1 октября 2010 г. 12:58, спустя 5 минут 49 секунд
Если стремиться к абсолютному совершенству, придется считать отдельные строки и заботиться о вертикальном ритме. … и, видимо, это несовместимо с переносами строк.ιιlllιlllι унц-унц -
1 октября 2010 г. 13:09, спустя 11 минут 5 секунд
Нет я строки не считаю. Может быть в следующей версии. Считаю только даты, из-за этого разрыв в кольце может быть непрогнозируемой высоты. С этим пока смирился. Кстати, мой контроллер на Блитце. Шаблон уже приводил. Ну не красота ли? Насколько меньше кода, все вместилось в один небольшой класс с двумя методами. Плюс там еще всякие фишки, где стрелочки рисовать, где нет и.т.д Шаблон я уже приводил выше, вот контроллер:
class SportCalendar
{
/*
$matches - ссылка на индексированный массив матчей, формата:
Array(
[0] => Array(
[Date] => 15.10.2009
[Timestamp] => 1255550400)
[1] => Array(
[Date] => 15.10.2009
[Timestamp] => 1255550400))
$bt - blitz
$controler - функция обработчик конкретного матча
*/
private function parsematches($indexes, &$matches, &$bt, &$controler, $context)
{
foreach($indexes as $index)
{
$bt->block($context.'/match', array('match' => call_user_func($controler, $matches[$index])));
}
}
public function parse(&$matches, &$bt, $controler)
{
$timestamp = time();
$first = current($matches);
$delta = abs($timestamp - $first['Timestamp']);
$currentdate = false;
$now = $j = 0;
for($i=0, $size=sizeof($matches); $i<$size; $i++)
{
if ($currentdate != $matches[$i]['Date'])
{
$dates[$j++] = array('Date' => $matches[$i]['Date'], 'matches' => array($i));
$currentdate = $matches[$i]['Date'];
}
else
{
$dates[$j-1]['matches'][] = $i;
}
$new = abs($timestamp - $matches[$i]['Timestamp']);
if ($new < $delta)
{
$now = $j-1;
$delta = $new;
}
}
$length = sizeof($dates);
$half = floor(($length-1)/2);
$bt->block('now', $dates[$now]);
self::parsematches($dates[$now]['matches'], $matches, $bt, $controler, 'now');
$leftseparator = $rightseparator = false;
if ($now > 0)
{
$bt->block('topleft');
$leftseparator = $now < $half;
for($i=$now-1, $j=0; $i>=0 && $j<$half; $i–, $j++)
{
$bt->block('leftfinished', $dates[$i]);
self::parsematches($dates[$i]['matches'], $matches, $bt, $controler, 'leftfinished');
}
for($l=0; $l<=$i ;$l++)
{
$bt->block('rightfinished'.($now != $length - 1 ? '' : 'last'), $dates[$l]);
self::parsematches($dates[$l]['matches'], $matches, $bt, $controler, 'rightfinished'.($now != $length - 1 ? '' : 'last'));
}
}
if ($now < $length-1)
{
$bt->block('topright');
$rightseparator = $now > $half;
for($i=$now+1, $j=0; $i<$length && $j<$half; $i++, $j++)
{
$bt->block('rightplanning', $dates[$i]);
self::parsematches($dates[$i]['matches'], $matches, $bt, $controler, 'rightplanning');
}
for($l=$length-1; $l>=$i; $l–)
{
$bt->block('leftplanning'.($now ? '' : 'first'), $dates[$l]);
self::parsematches($dates[$l]['matches'], $matches, $bt, $controler, 'leftplanning'.($now ? '' : 'first'));
}
}
$bt->setGlobal(array('leftseparator' => $leftseparator, 'rightseparator' => $rightseparator, 'bottom' => $leftseparator || $rightseparator));
}
} -
18 октября 2010 г. 10:15, спустя 16 дней 21 час 6 минут
шаблон в первую очередь для того что бы разграничить работу программиста и верстальщика.. ну повелось это я вам скажу от америкосов где очень конкретная специлизация если он прогер на пыхе, то не полезит в html и css там свой прогер в компаниях, поэтому восновним в шаблонизаторах западников, делаеться ударение на разделение кода php и скриптов от кода разметки html и css/
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!