Сортировка в битрикс 500 что это
Перейти к содержимому

Сортировка в битрикс 500 что это

  • автор:

Bitrix news:list сортировка

К одному сайту подключено большое количество региональных поддоменов. В настройках инфоблока заведено свойство REGION , по которому необходимо сортировать элементы в многочисленных компонентах на страницах сайта. К примеру, на поддомене arh.example.com отображен список последних статей за месяц, но приоритетными в списке показываются статьи по региону Архангельск (REGION=3), затем по дате активности убыванию. Требуется настроить сортировку, чтобы к запросу добавлялось ORDER BY FIELD(PROPERTY_REGION_VALUE, 3) DESC , где 3 — id текущего региона. Пробую кастомизировать компонент news.list, в котором вызывается метод CIBlockElement::getList() , но, судя по всему, он не позволяет осуществлять сортировку таким образом. Есть ли способ правильно и без костылей добавить нужное условие в запрос, не переписывая при этом половину методов битрикса?

Отслеживать
задан 21 окт 2019 в 11:07
innokentij innokentij
754 3 3 серебряных знака 19 19 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Как я понял, свойство REGION у вас числовое. Прочитайте здесь, если еще не читали. Насколько я понял, не должно быть никаких проблем с сортировкой по вашему свойству согласно этой статье. А если проблемы есть, то в чем они проявляются?

Отслеживать
ответ дан 21 окт 2019 в 12:20
60 6 6 бронзовых знаков

Неочевидно, как вывести сначала новые статьи с регионом с id 3, затем по всем остальным регионам. Как сделать это на уровне SQL-запроса, я знаю, а какое условие указывать в ELEMENT_SORT_FIELD — нет.

21 окт 2019 в 12:49

CIBlockElement::getList() такой вариант сортировки не поддерживает (не может сгенерировать такой тип SQL запроса).

Самое тривиальное решение: Использовать 2 компонета — в первом вы используете фильтр — выводить только данные по третьему региону. Во втором — наоборот, его исключаете. Но вероятнее всего вам такой вариант не подойдет, плюс будут проблемы с постраничной навигацией.

Логичнее использовать такое решение: Написать обработчик события на сохранение/изменение элементов ИБ. В случае если Статья региона 3 (Архангельск) то изменяем сортировку на большее число. (по-умолчанию сортировка 500 обычно, можно поставить 700) В самом же компоненте настроить сортировку: Первую — по дате, на уменьшение Вторичную — по сортировке, на уменьшение

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

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

P.S. как видите очень много предположений о вашей ситуации, т.к. не достаточно раскрыта ситуация в вашем вашем вопросе.

Как работать со списками в CRM

Таблица — один из самых привычных способов отображения большого количества данных.

В Битрикс24 все элементы могут быть представлены в виде настраиваемых списков-таблиц. Потратьте немного времени на настройку списка и выполняйте привычные задачи с большей эффективностью:)

Настройка внешнего вида

Вы легко можете менять ширину столбцов и порядок их следования, настраивать количество и название столбцов, сортировать записи и многое другое:

Общий вид списка.png

Прежде всего нажмите на шестеренку и настройте те поля, которые вы хотите видеть в списке. При необходимости можно переименовать поле:

Выбор полей.png

Если надо изменить ширину столбца — потяните за его границу. Хотите поменять положение колонки — просто перетащите её!

Сортировка осуществляется кликом по стрелке рядом с названием столбца (стрелка вверх — сортировка по возрастанию, стрелка вниз — по убыванию).

Поиск и фильтрация

А как же искать и фильтровать нужную нам информацию?

Поиск и фильтрация очень просты: начните вводить в строку поиска то, что хотите найти — фрагмент номера телефона или названия, фамилию ответственного — и система тут же покажет результат.

Например, давайте отыщем каждый рынок в нашем списке компаний:

Поиск в списке.png

Однако поиск не всегда решает все задачи. К примеру, надо найти недавно добавленные компании, у которых в штате больше 500 человек. В такой ситуации воспользуйтесь фильтром и задайте нужные условия для отбора:

Фильтр в списке.png

Пользуйтесь всеми возможностями списков и с легкостью работайте с большим количеством данных:)

Рекомендую также прочитать:

  • Поиск элементов с помощью CRM-фильтра
  • Канбан в CRM

Как в 1С-Битрикс сделать рандомную сортировку в каталоге?

Добрый день! Стоит задача:
в компоненте каталог, при выводе элементов раздела, сделать рандомную сортировку. Только не для всех элементов, а только для тех у которых индекс сортировки больше 23 (равен 500 например). Как это можно реализовать?

  • Вопрос задан более трёх лет назад
  • 467 просмотров

15 комментариев

Простой 15 комментариев

babarun

Алексей Емельянов @babarun Куратор тега 1С-Битрикс

Только не для всех элементов, а только для тех у которых индекс сортировки больше 23 (равен 500 например).

Вы хотите сделать какую то частичную сортировку? У кого индекс сортировки меньше 23 их нужно выводить?

alexander_chn @alexander_chn Автор вопроса

Алексей Емельянов, да, то есть еще раз:
те элементы, индекс сортировки которых равен 23 и меньше — сортируем по индексу. Все остальные — рандомно.

Suntechnic

Александр Маджугин @Suntechnic
А первая сортировка SORT=>ASC, а вторая RAND=>RAND не работает таким образом?
alexander_chn @alexander_chn Автор вопроса
Александр Маджугин, не работает. А как и где нужно прописать мое условие?

Suntechnic

Александр Маджугин @Suntechnic

alexander_chn, ну в комопненте соотвественно:
ELEMENT_SORT_FIELD => SORT
ELEMENT_SORT_ORDER => ASC
ELEMENT_SORT_FIELD2 => RAND
ELEMENT_SORT_ORDER2 => RAND

Не факт что это сработает. По логике должно рандомно сортировать элементы с одинаковым SORT, но на практике не помню — там какая-то заморочка с этим RAND дополнительная.
Однако попробовать стоит.

alexander_chn @alexander_chn Автор вопроса
Александр Маджугин, попробовал — не работает.

Suntechnic

Александр Маджугин @Suntechnic

alexander_chn, все в случайном порядке выводит?
У вас сколько элементов с индексом сортировки 23 и меньше может быть обычно и каков размер страницы?

alexander_chn, что за космические технологии? Разве mysql так умеет? Значит и Битрикс не умеет.
alexander_chn @alexander_chn Автор вопроса

Александр Маджугин, выходит 22 элемента с индексом сортировки от 1 до 22 (по возрастанию). все остальные идут с индексом 500.

alexander_chn, если не секрет, зачем тебе это? Просто работа с сортировкой rand подразумевает отсутствие кеширования. Это мягко говоря не очень.

Suntechnic

Александр Маджугин @Suntechnic

alexander_chn, выведете отдельно двумя компонентами первые 22 элемента, а потом остальные.

PetrPo, ну почему не очень — если сервак нормальный, посещаемость не высокая и товаров не миллионы — пусть работает.
А если хоть что-то из этого, то какой к черту компоненты каталога? Нормально нужно тогда делать.

Александр Маджугин, не соглашусь с тем что пусть так работает, но согласен что нормально нужно делать.
А так у меня тоже есть вариант, достать все элементы, написать php-ную сортировку и сделать свою постраничку, даже с кешированием работать будет))

Suntechnic

Александр Маджугин @Suntechnic

PetrPo, не будет. Т.е. будет, но толку будет мало, так как PHP будет ворочать огромными наборами данных в памяти.
Если бы мне поставили такую задачу как ТС, и сказали что надо юзать стандартные компоненты да еще и комплексные, я бы поматерился и предложил делать так как в ответе ниже

Александр Маджугин, шутки шутками, но тут только один правильный ответ, mysql не умеет так делать, а программируя на высокоуровневом япе ты не можешь прыгнуть ниже этого уровня, поэтому надо принять такое ограничение. А реализовывать то что ты написал, да мне даже читать больно)) + не вижу решения с постраничкой

Suntechnic

Александр Маджугин @Suntechnic

PetrPo, вполне реализуемо и будет работать. Для постранички просто передавай параметр второй сортировки.
Есть задача и ее нужно решить. Да — в ней мало практического смысла, да — заказчик скорее всего не отдает себе отчета в что хочет получить. Но он платит деньги. Решение есть и его можно внедрить.
Что конкретно вызывает у тебя боль?

Рост размера кэша? Не вижу проблем — там смешные объемы по сравнению с картинками к этим товарам.

Индексация? Ну выводи сразу все элементы не пряча в скрипт и перемешивай их на странице уже js’ом. Самое простое — сделать их флексами и расставить order случайно.

Проблема с ужасными дефолтными скриптами компонентов ( кстати сами они боли не вызвают?) ? См. предыдущий пункт. Или вариант два — инициализировать их после рендера элементов.

Короче считаю что задача имеет решение, и не одно и если клиента не удается от нее отговорить — решить можно.

Решения вопроса 0
Ответы на вопрос 1

Suntechnic

Александр Маджугин @Suntechnic

Делаем обычную сортировку по SORT, а дальше:

1 в шаблоне выводим только элементы с сортировкой меньше 23, остальные вываливаем в виде данных и рендерим на на странице js’ом (тупой вариант: выводить в тег script с невыполняемым type, и оттуда добавлять js’ом в страницу), страницы по набору элементов будут одинаковые, но порядок каждый раз будет разным. Кэш работает.

2 Добавляем 2-4 дополнительных свойства скажем SORT1, SORT2 и т.д. зафигачиваем эти свойства случайными числами и делаем вторую сортировку по одному из них. При этом выбираем по какому именно рандомно. Получаем 4 кэша с разными страницами по составу.

3 Раз в сутки ночью, агентом переписываем эти допсвойства на другие случайные значения.

Итого: кэш работает, видимость случайности есть, причем она при каждом обновлении разная и даже хрен поймешь что страницы часто одинаковы по составу. Объем кэша каталог вырастит — ну у всего есть цена.

UPD:
Про решение с двумя компонентами — да просто во втором компоненте на первой странице скройте 22 элемента первые и все. Естественно страница должна быть больше 22 элементов.
Возможно вы сразу возразите, что тогда посетитель в постраничной выборке не увидит эти 22 элемента, поэтому сразу отвечу — вас это вообще не должно волновать, так как у вас посетитель вообще не увидит почти половину каталога (так на вскидку 40-45%) при случайной выборке + пагинации. Вообще пагинация при настоящей случайной выборке полностью лишена смысла.
Рабочее решение близкое к вашим требованиям я выше привел.
Если хотите избавится в нем от того что часть элементов каталога будет невидна при пагинации — передавайте в свойствах пагинации еще и свойство сортировки случайно выставленное на первой стартовой странице.

Сортировка в битрикс 500 что это

Нашли ошибку? Выделите мышкой и нажмите Ctrl+Enter

Разметка свойств по полю «Сорт.» для удобного управления

Все свойства инфоблоков сгруппированы по индексу сортировки. Это сделано для того, чтобы после установки решения можно было легко и быстро понять, какие свойства относятся к системным, а какие были созданы для контента демо-версии.

Внимание! Для корректной работы сайта не рекомендуется изменять или удалять системные свойства (индекс сортировки от 200 до 500) без навыков программирования на 1С-Битрикс.

Свойства из демо-контента можно удалить или изменить под специфику вашего проекта. В этой статье рассмотрим каждую группу свойств по отдельности.

Примечание: Рекомендации актуальны для решений, в которых не производились изменения в инфоблоках — например, не редактировались индексы сортировки.

Индексы сортировки от:

  • 200 – отмечают основополагающие свойства решения (то, из чего формируется страница). Например, для корректной работы решения в карточке товара важны свойства «Отображать в слайдере на главной», «Статус», «ID поста блога для комментариев», «Количество комментариев».

  • 300 – это дополнительные опции. Например, стикеры, кнопки, баннеры, видео, галерея;

  • 400 – свойства, позволяющие связывать между собой элементы из разных разделов. К примеру, товар может быть связан с проектами, сотрудниками, статьями, курсами и брендом.

  • 500 – индекс сортировки для пользовательских свойств. Это значение устанавливается по умолчанию при добавлении новых характеристик. Самостоятельно созданные характеристики можно отключать/удалять без серьезных последствий.

  • 600 – этим индексом отмечены свойства, которые были созданы для демо-контента. Если после установки решения они вам не понадобятся, их можно отключить или удалить.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *