@PHPjedi

Как реализовать сортировку контента?

Хочу реализовать сортировку контента поста. Например, может быть, что по счету второй контент, может быть создан первее, чем первый контент - Введение.

Конечно же, первым делом в голову приходит идея сделать поле sort_id, и туда записывать численные значения. Но мне кажется, что это слишком примитивно, так как можно вручную написать для второго контента sort_id=7. Возможно, также, что sord_id будет повторяться. Не знаю, до этого с таким не сталкивался. Как бы вы реализовали это?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 2
New_Horizons
@New_Horizons
Бред:
Проще не значит хуже, если это решает поставленную задачу. Только я бы в в поле sort начинал записывать сотни: 100, 200, 300. На случай, если нужно будет что-то вставить между элементами.
Ответ написан
Комментировать
@d-sem
Чем не устраивает вариант сделать сортировку и фильтрацию в стиле аналогичную в rest api?

вида - /items?filter[param1]=gte:10&filter[param2]=eq:somevalue&sort=param1,-param2&limit=10&offset=5
где filter параметры выборки
filter[param1]=gte:10
param1 - название параметра
gte(greater than or equal) - больше или равно
10 - значение

sort=param1,-param2
сортировка ответа по параметрам
по param1 по возрастанию, потом param2 по убыванию

offset - число результатов которые нужно пропустить
limit - количество результатов на выдачу (не более чем)

При необходимости получать информацию пачками - добавить пагинанацию
?page=2&per-page=10
соответственно, номер страницы в результатах при разбивке по 10 значений на страницу

Сочетание сортировки и фильтрации позволит в любом нужном порядке доставать контент(при необходимости расширяя фильтры) и не особо костылить. Конечно кажется избыточным, но делается один раз и переиспользуется потом в других местах. Ну или взять себе понравившиеся части.

Ну, а если нужна принудительная ручная сортировка нужен параметр приоритета/веса(weight) с соответствующей соортировкой по умолчанию. Больше приоритет - ближе к началу списку. sort=weight
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы