|
|
10.10.2018, 20:20
|
|
Павел
ALTER EGO
Зарегистрирован: 2018-09-28
Сообщений: 4
|
Всем привет!
Подскажите, можно ли как-нибудь реализоваться следующее:
На сайте есть категория с товаром, где есть подкатегории второго уровня, 3, 4 и так далее:
-Категория:
- Подкатегория 1
- Подподкатегория 11
- Подподкатегория 12
- Подкатегория 2
- Подкатегория 3
Чтобы при клике на "Подкатегория 1" отображался товар из всех дочерних подкатегорий 11 и 12
Аналогично, например, в 11 тоже могут быт подкатегории с товаром - их тоже надо бы отобразить ...
|
|
|
11.10.2018, 06:00
|
|
Макуров Константин
Студия "Первыйвеб"
Зарегистрирован: 2011-08-04
Сообщений: 41
|
https://netcat.ru/developers/docs/components/system-settings/
$ignore_parent - если 1, игнорирует выборку только родительских объектов (по умолчанию 0)
Ну, а дальше в зависимости от ваших желаний
|
|
|
11.10.2018, 10:31
|
|
Павел
ALTER EGO
Зарегистрирован: 2018-09-28
Сообщений: 4
|
Спасибо, у меня создан компонент Товар1 и он добавлен в каждую категорию, уже пробовал в системных настройках этого компонента указать $ignore_parent = 1;
Но так и не выводит, все равно нужно перейти в конкретную категорию, где товар лежит, чтобы его отобразить ...
Может эту переменную $ignore_parent нужно в запрос добавить ?
|
|
|
11.10.2018, 18:10
|
|
Макуров Константин
Студия "Первыйвеб"
Зарегистрирован: 2011-08-04
Сообщений: 41
|
Вот код, который нужно вставить в системные настройки. Конечно грубо, но работает. Вот пример на демо: http://18843.store.sitemanager.ru/ раздел одежда.
Админка:
Панель управления: http://18843.store.sitemanager.ru/netcat/admin/
Логин: admin
Пароль: 9clntbb
$sid = $db->get_col("SELECT
child.`Subdivision_ID` AS sid
FROM Subdivision AS sub
LEFT JOIN `Subdivision` as child ON sub.`Subdivision_ID` = child.`Parent_Sub_ID`
LEFT JOIN Catalogue AS catalogue ON catalogue.Catalogue_ID = sub.Catalogue_ID
WHERE (sub.Parent_Sub_ID = {$sub} OR sub.`Subdivision_ID` = {$sub}) AND child.`Subdivision_ID`
GROUP BY child.`Subdivision_ID`
ORDER BY sub.`Priority`");
$s = implode(",", $sid);
if ($s) {
$ignore_sub = $ignore_cc = 1;
$query_where = "a.`Subdivision_ID` IN ({$s})";
}
|
|
|
12.10.2018, 10:34
|
|
Павел
ALTER EGO
Зарегистрирован: 2018-09-28
Сообщений: 4
|
Большое спасибо! Работает, то что надо!
|
|
|
12.10.2018, 23:32
|
|
Игорь
Игорь Мишарин
Зарегистрирован: 2011-11-20
Сообщений: 482
|
Можно и короче код применить, используя nc_get_sub_children():
Код:
$ignore_sub=$ignore_cc=1;
$cursubs=join(",",nc_get_sub_children($current_sub['Subdivision_ID']));
$query_where = "a.Subdivision_ID IN ($cursubs)";
Stark
|
|
|
30.10.2018, 10:08
|
|
Юрий
Зарегистрирован: 2018-10-30
Сообщений: 18
|
В реализации решения нужно постараться не забыть критерии доступности к показу товара
К примеру - можно учесть:
Checked=1
Price>0
Есть ли изображение.
Включен ли для показала сам раздел Checked=1 в Subdivision и Инфоблок - Sub_Class Checked=1
И заложить сортировку вывода с дальнейшим функционалом - фильтрации и сортировки.
|