Вывод новостей на Views - как пропустить первые 2 элемента с учётом закреплённых?

Главные вкладки

Аватар пользователя chelwolf chelwolf 2 мая 2021 в 21:06

Есть сайт, где крупно выводятся 2 последних новости и списком остальные 4. Технически решено 2 блоками views - соответственно первый блок выводит 2 последние новости, второй блок - 4 последние, пропуская 2 элемента.

Все было хорошо, пока не появилась необходимость делать ещё и закреплённые новости.

Вопрос: как во views сделать так, чтобы блок, который пропускает 2 элемента, теперь пропускал 1 элемент? Т.е. учитывал количество закреплённых новостей в другом блоке?

Лучший ответ

Аватар пользователя marassa marassa 21 мая 2021 в 11:20

Теперь хотя бы понятно.

chelwolf wrote: Из правого блока закреплённые новости мы исключаем

Зачем?
Почему нельзя в правом блоке сделать точно такой же порядок сортировки, как и в левом (сначала закрепленные, потом остальные по убыванию даты) и по-прежнему пропустить две строчки?

Комментарии

Аватар пользователя marassa marassa 2 мая 2021 в 21:30

chelwolf wrote: закреплённые новости

ведь по какому-то признаку "закрепляются"? Вот и отфильтруйте их по этому признаку.

Аватар пользователя chelwolf chelwolf 21 мая 2021 в 10:22

Если слева у меня выводятся 2 новости, которые закреплены, как в таком случае справа пропускать не 2, а 4 новости? В этом проблема, не могу понять как мне помогут фильтры?

Аватар пользователя marassa marassa 21 мая 2021 в 10:47

Объясните внятно полный алгоритм отбора новостей. То у Вас нужно "сделать так, чтобы блок, который пропускает 2 элемента, теперь пропускал 1 элемент". Теперь почему-то нужно "пропускать не 2, а 4 новости". Если Вы думаете, что от одного взгляда на картинку всем сразу понятно что такое "закрепленные новости" и как они влияют на все остальные, то это не так. Опишите ВСЕ блоки и четкий алгоритм, по которому новости попадают в тот или иной блок.

Аватар пользователя chelwolf chelwolf 21 мая 2021 в 11:01

Алгоритм: созданы 2 блока views, которые выводят последние новости, опубликованные на главной странице. Левый блок выводит 2 материала, правый 4, пропуская 2 первых элемента. В итоге у нас получается рабочая схема вывода новостей (см. скриншот).

Но появляется проблема, если в левом блоке мы захотим закреплять новости вверху списка. Для этого мы настраиваем порядок сортировки во views: сначала идут новости, которые закреплены, потом по дате добавления. Из правого блока закреплённые новости мы исключаем.

Важно, что мы не знаем сколько новостей будет закреплено. Возможны три варианта: 1 новость, 2 новости, либо их вообще не будет в закреплённых.

В случае, если пользователь сделает закреплёнными, например, 2 новости, в левом блоке не покажется 2 последние новости по дате добавления. Но и в правом блоке они не покажутся, поскольку там всегда пропускается 2 элемента.

Как быть?)

Аватар пользователя marassa marassa 21 мая 2021 в 11:20

Теперь хотя бы понятно.

chelwolf wrote: Из правого блока закреплённые новости мы исключаем

Зачем?
Почему нельзя в правом блоке сделать точно такой же порядок сортировки, как и в левом (сначала закрепленные, потом остальные по убыванию даты) и по-прежнему пропустить две строчки?

Аватар пользователя chelwolf chelwolf 21 мая 2021 в 11:22

Будет же дублирование новостей? При таких настройках у меня выведутся 2 закреплённые новости, как и в левой части)

Аватар пользователя chelwolf chelwolf 21 мая 2021 в 11:49

Точно ведь, они не пропадут с такими параметрами) Ответ на поверхности был, спасибо большое, почему-то сложно было это осознать))

Аватар пользователя chelwolf chelwolf 21 мая 2021 в 11:05

Вижу только один вариант решения - добавить слева ещё один блок, который будет выводить только закреплённые новости, а если их нет - будет прятаться. Но хочется ограничиться именно тем количеством новостей, которое есть сейчас, т.е. не добавлять в случае закрепления ещё 2 позиции в левую часть