Передача разного кол-ва статей с одной выборки
Передача разного кол-ва статей с одной выборки
Здравствуйте, у меня такой вопрос. Как можно выборку поделить на разные части, т.е у меня есть вывод постов вот в таком виде http://prntscr.com/79inew , сперва 2 блока по 3 статьи идет, а потом блок на две статьи. Собираюсь сделать так шаблон на три статьи и шаблон на 2 статьи. Как мне выборку правильно поделить чтобы 2 раза передать по 3 статьи в шаблон для 3-х статей, потом один раз передать 2 статьи в шаблон где 2 статьи и т.д.
Re: Передача разного кол-ва статей с одной выборки
у меня из идей только через foreach проходить и поставить счётчик до 8, и в зависимости от счётчика запускать тот или иной шаблон. подумал и решил что нужен шаблон только для большой картинки и шаблон для маленькой и в зависимости от счётчика запускать тот или иной шаблон. Только вот мне кажется это не самое лучшее решение
Re: Передача разного кол-ва статей с одной выборки
Можно выбрать 8 статей, отдать их в виджет (ну или в нем сразу выбрать), а в там написать логику построения.
Вариант не идеальный - первое, что в голову пришло.
Вариант не идеальный - первое, что в голову пришло.
Re: Передача разного кол-ва статей с одной выборки
а если смотреть идеальный вариант, то как лучше сделать?
Re: Передача разного кол-ва статей с одной выборки
С помощью CSS. Либо в цикле проверяете и прифигачиваете нужный класс или можно всё разрулить c :nth-of-type(n) или флексбокс, например. Если требования о поддержке браузерами позволяют. Отдельные вьюшки(шаблоны) городить не надо.
Re: Передача разного кол-ва статей с одной выборки
Конечно лучше выбрать все одним запросом, а делить на стили уже во вьюшке.
Код: Выделить всё
$size = ($n>3)? 3 : $n; //$n - кол-во выбранных статей, их может быть меньше чем вы хотели
for($i=0; $i<$size; $i++)
{
//оформляем первые 3 статьи
}
array_splice($articles, 0, $size); //удаляем уже обработанные
foreach($articles as $article)
{
//оформляем оставшиеся 2
}
Re: Передача разного кол-ва статей с одной выборки
тут тогда должно быть оформляем первые три , вторые три и потом только последние 2. мне хорошо сделать вывод типо постраничного. Есть отдельный Action который служит для отображения восьми статей(на него ajax запросы приходят показать ещё). И при вашем раскладе первые три статьи надо будет ещё крутить как отобразить. По моему здесь оптимальным является два шаблона, для большой картинки и для маленькой и потом к нам в action приходит запрос на отображение 8 статей(или меньше), мы пробегается по выборке с помощью foreach и по счётчику выводит тот или иной фрагмент кода и параметр передаём (картинка слева или справа)Roksalana писал(а):Конечно лучше выбрать все одним запросом, а делить на стили уже во вьюшке.Код: Выделить всё
$size = ($n>3)? 3 : $n; //$n - кол-во выбранных статей, их может быть меньше чем вы хотели for($i=0; $i<$size; $i++) { //оформляем первые 3 статьи } array_splice($articles, 0, $size); //удаляем уже обработанные foreach($articles as $article) { //оформляем оставшиеся 2 }
Re: Передача разного кол-ва статей с одной выборки
array_slice() - имхо то что вам нужно. Пилите массив на куски как вам нужно и передаете в нужную вьюшку, а та обычным форичем проходит по нему и не нужны никакие счетчики.bakhur писал(а): тут тогда должно быть оформляем первые три , вторые три и потом только последние 2. мне хорошо сделать вывод типо постраничного. Есть отдельный Action который служит для отображения восьми статей(на него ajax запросы приходят показать ещё). И при вашем раскладе первые три статьи надо будет ещё крутить как отобразить. По моему здесь оптимальным является два шаблона, для большой картинки и для маленькой и потом к нам в action приходит запрос на отображение 8 статей(или меньше), мы пробегается по выборке с помощью foreach и по счётчику выводит тот или иной фрагмент кода и параметр передаём (картинка слева или справа)