Передача разного кол-ва статей с одной выборки

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
bakhur
Сообщения: 202
Зарегистрирован: 2015.03.04, 10:56

Передача разного кол-ва статей с одной выборки

Сообщение bakhur »

Здравствуйте, у меня такой вопрос. Как можно выборку поделить на разные части, т.е у меня есть вывод постов вот в таком виде http://prntscr.com/79inew , сперва 2 блока по 3 статьи идет, а потом блок на две статьи. Собираюсь сделать так шаблон на три статьи и шаблон на 2 статьи. Как мне выборку правильно поделить чтобы 2 раза передать по 3 статьи в шаблон для 3-х статей, потом один раз передать 2 статьи в шаблон где 2 статьи и т.д.
bakhur
Сообщения: 202
Зарегистрирован: 2015.03.04, 10:56

Re: Передача разного кол-ва статей с одной выборки

Сообщение bakhur »

у меня из идей только через foreach проходить и поставить счётчик до 8, и в зависимости от счётчика запускать тот или иной шаблон. подумал и решил что нужен шаблон только для большой картинки и шаблон для маленькой и в зависимости от счётчика запускать тот или иной шаблон. Только вот мне кажется это не самое лучшее решение
Аватара пользователя
PaSiS
Сообщения: 88
Зарегистрирован: 2011.11.15, 18:07
Контактная информация:

Re: Передача разного кол-ва статей с одной выборки

Сообщение PaSiS »

Можно выбрать 8 статей, отдать их в виджет (ну или в нем сразу выбрать), а в там написать логику построения.
Вариант не идеальный - первое, что в голову пришло.
bakhur
Сообщения: 202
Зарегистрирован: 2015.03.04, 10:56

Re: Передача разного кол-ва статей с одной выборки

Сообщение bakhur »

а если смотреть идеальный вариант, то как лучше сделать?
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: Передача разного кол-ва статей с одной выборки

Сообщение chesar »

С помощью CSS. Либо в цикле проверяете и прифигачиваете нужный класс или можно всё разрулить c :nth-of-type(n) или флексбокс, например. Если требования о поддержке браузерами позволяют. Отдельные вьюшки(шаблоны) городить не надо.
Аватара пользователя
Roksalana
Сообщения: 215
Зарегистрирован: 2014.01.14, 09:34

Re: Передача разного кол-ва статей с одной выборки

Сообщение Roksalana »

Конечно лучше выбрать все одним запросом, а делить на стили уже во вьюшке.

Код: Выделить всё

$size = ($n>3)? 3 : $n; //$n - кол-во выбранных статей, их может быть меньше чем вы хотели
for($i=0; $i<$size; $i++)
{
        //оформляем первые 3 статьи
}
array_splice($articles, 0, $size); //удаляем уже обработанные
foreach($articles as $article)
{
        //оформляем оставшиеся 2
}        
 
bakhur
Сообщения: 202
Зарегистрирован: 2015.03.04, 10:56

Re: Передача разного кол-ва статей с одной выборки

Сообщение bakhur »

Roksalana писал(а):Конечно лучше выбрать все одним запросом, а делить на стили уже во вьюшке.

Код: Выделить всё

$size = ($n>3)? 3 : $n; //$n - кол-во выбранных статей, их может быть меньше чем вы хотели
for($i=0; $i<$size; $i++)
{
        //оформляем первые 3 статьи
}
array_splice($articles, 0, $size); //удаляем уже обработанные
foreach($articles as $article)
{
        //оформляем оставшиеся 2
}        
тут тогда должно быть оформляем первые три , вторые три и потом только последние 2. мне хорошо сделать вывод типо постраничного. Есть отдельный Action который служит для отображения восьми статей(на него ajax запросы приходят показать ещё). И при вашем раскладе первые три статьи надо будет ещё крутить как отобразить. По моему здесь оптимальным является два шаблона, для большой картинки и для маленькой и потом к нам в action приходит запрос на отображение 8 статей(или меньше), мы пробегается по выборке с помощью foreach и по счётчику выводит тот или иной фрагмент кода и параметр передаём (картинка слева или справа)
Аватара пользователя
Roksalana
Сообщения: 215
Зарегистрирован: 2014.01.14, 09:34

Re: Передача разного кол-ва статей с одной выборки

Сообщение Roksalana »

bakhur писал(а): тут тогда должно быть оформляем первые три , вторые три и потом только последние 2. мне хорошо сделать вывод типо постраничного. Есть отдельный Action который служит для отображения восьми статей(на него ajax запросы приходят показать ещё). И при вашем раскладе первые три статьи надо будет ещё крутить как отобразить. По моему здесь оптимальным является два шаблона, для большой картинки и для маленькой и потом к нам в action приходит запрос на отображение 8 статей(или меньше), мы пробегается по выборке с помощью foreach и по счётчику выводит тот или иной фрагмент кода и параметр передаём (картинка слева или справа)
array_slice() - имхо то что вам нужно. Пилите массив на куски как вам нужно и передаете в нужную вьюшку, а та обычным форичем проходит по нему и не нужны никакие счетчики.
Ответить