Як зробити вибірку щоб в неї потрапили тільки сторінки з активних розділів

Припустимо, нам потрібно отримати всі сторінки об'єктів каталогу, відмічені як активні, з будь-якої розділу з певною вкладеність. Це зробити дуже просто, в документації, см. "Корисні посилання", є приклади:

Але, наприклад ми маємо таку структуру:

Як зробити вибірку щоб в неї потрапили тільки сторінки з активних розділів

І хочемо, щоб товари з розділу "Музичні центри" не потрапили в результат, так як розділ каталогу, де вони знаходяться не відзначений, як активний, в такому завданні одного Selector'a нам не вистачить.

рішення №1

Для цього нам потрібно буде скористатися класом ієрархічної моделі даних - umiHierarchy, см. "Корисні посилання". Ми створимо результуючий масив, в який будуть потрапляти тільки ті сторінки, батьки яких відзначені, як активні, для цього модифікуємо наш код:

Однак, якщо ми потім буде виводити результат роботи вибірки, використовуючи посторінкову пагінацію, то можливі випадки, коли на сторінці не буде жодного об'єкта, тобто нам потрібно виключити всі неактивні елементи ще на стадії формування запиту.

рішення №2

Для цього нам потрібно буде спочатку за допомогою Selector вибирати всі активні розділи каталогу і записувати їх ідентифікатори в масив, потім робити нову вибірку активних об'єктів каталогу, які є дочірніми до отриманих ідентифікаторів активних розділів каталогу, тобто наш скрипт прийме наступний вигляд:

Корисні посилання

  • Документація по Selector [1]
  • Документація по umiHierarchy [2]
  • Документація по методу getParent () [3]
  • Документація по методу getElement () [4]
  • Документація по методу getIsActive () [5]

Схожі статті