Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 3 Гостей просматривают эту тему.

*

Cubes

  • *
  • 13
  • +0/-0
    • Просмотр профиля
Собственно встала такая задача. Мы находимся в "Раздел1", в котором присутствует фильтр по цене (работающий и по вложенным каталогам). Задаем цену от 10 руб. до 15 руб, в результате получаем те разделы(выделены жирным), в объектах которых найдено совпадение(выделено красным).

Пример для наглядности:

Раздел1:
  - Подраздел1:
    -- Объект1 (цена: 11 руб.)
    -- Объект2 (цена: 14 руб.)
  - Подраздел2:
    -- Объект3 (цена: 13 руб.)
    -- Объект4 (цена: 20 руб.)
  - Подраздел3:
    -- Объект5 (цена: 16 руб.)
    -- Объект6 (цена: 21 руб.)

Соответственно на выходе получаем:

Найдено в разделах:
  - Подраздел1
  - Подраздел2
.

Насколько я пониманию, нужно писать кастомный макрос на основе getObjectList, однако в таком случае, если выводить родительскую категорию объекта, в котором найдено совпадение, может возникнуть проблема дублей (в "Подраздел1" есть 2 объекта, в которых найдено совпадение, соответственно "Подраздел1" будет выводится 2 раза). Поделитесь, если есть мысли в какую сторону смотреть и как это красиво реализовать. Работаю с TPL. Спасибо!
« Последнее редактирование: 15 Января 2016, 14:35:18 от Cubes »

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
вызываем метод getObjectList, либо через selector делаем выборку, потом проходимся по массиву и получаем родительскую страницу, пишем ее в массив, потом убираем в массиве дубли

*

Cubes

  • *
  • 13
  • +0/-0
    • Просмотр профиля
Вот с этим "...selector делаем выборку, потом проходимся по массиву и получаем родительскую страницу" и есть проблема. Можете ткнуть, где посмотреть? Если вызываем getObjectList в "Раздел1", то для полученных объектов родительская страница - "Раздел1".

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
у вас же структура
Цитировать
Раздел1:
  - Подраздел1:
    -- Объект1 (цена: 11 руб.)
    -- Объект2 (цена: 14 руб.)
  - Подраздел2:
    -- Объект3 (цена: 13 руб.)
    -- Объект4 (цена: 20 руб.)
  - Подраздел3:
    -- Объект5 (цена: 16 руб.)
    -- Объект6 (цена: 21 руб.)

значит родительская для объектов будет не Раздел 1, а соответствующие подразделы

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля

*

velodemort

  • *
  • 3
  • +0/-0
    • Просмотр профиля
Здравствуйте! Столкнулся с аналогичной проблемой. Не могу понять, как подружить getObjectList и selector. GetObjectList позволяет отобрать объекты каталога с учетом фильтрации (fields_filter=) и пагинации (p=), а как теперь передать эти данные (отфильтрованные) для обработки в selector (если это вообще так делается)? Или придется усовершенствовать свою выборку, чтобы она принимала данные фильтрации и пагинации?

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
и что вы в селекторе собираетесь делать с данными из getObjectList???

*

velodemort

  • *
  • 3
  • +0/-0
    • Просмотр профиля
Т.е. я правильно понимаю, что нужно писать кастомный макрос, в котором используется selector, учитывающий фильтрацию и пагинацию (проверять через getRequest())? Иного решения нет?

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
вам вообще для чего???

*

velodemort

  • *
  • 3
  • +0/-0
    • Просмотр профиля
У меня похожая структура, как у автора топика, структура примерно такая:
- Группа товаров  (каталог)
  -- Товар (каталог)
   --- Магазин 1. (объект)
   --- Магазин 2. (объект)

Т.е. в каждом товаре, который представляет собой раздел у меня несколько магазинов (объектов). Меня интересует, например поиск по наличию товара, но выводить нужно не магазины, а категории, т.е. товары (внутри которых, в объектах, найдено совпадение). И даже если "товар 1" есть в двух магазинах, показать нужно все-равно один раздел "Товар 1".

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
так вот я и предложил искать объекты с помощью селектора, без учета номера страницы, потом проходиться по выбранным объектам и получать родителя, т.е. каталог в вашем случае, потом уже работаешь с массивом каталогов, т.е. удаляешь дубли, делаешь пагинацию и т.д. я других вариантов не вижу

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Мне кажется, что наличие в разных магазинах лучше делать с использованием составного поля для товара. Selector по нему ищет без особенных проблем + не нужно будет мучаться пагинацией, адресами и т.п.
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
Цитировать
Selector по нему ищет без особенных проблем + не нужно будет мучаться пагинацией, адресами и т.п.

это вот очень интересно, и как же селектор ищет по составному полю???

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
$pages->where('stores_state')->equals(array('int' => 123));

слабовато как-то, выбрать где значение опции равно 123... если касаемо магазинов, то было бы логичнее искать по ненулевому значению int