четверг, 23 ноября 2017 г.

Bitrix Проверка принадлежности текущей категории определенному родительскому инфоблоку

Иногда необходимо проверить что какой-либо раздел каталога является потомком какого-то другого раздела, но при этом мы не знаем сколько уровней вложености может разделять две категории.
В таким случая очень сильно помогает концепция вложеных множеств, которую реализует механизм инфоблоков Bitrix.
Основываясь на этих вложеных множествах можно применить вот такой код:
$checkFilterAvailable = function($currentId, $parentId) {
        $rs = CIBlockSection::GetList(
            array(),
            array('ID'=>$parentId)
        );
        $ar = $rs->GetNext();
        $rs = CIBlockSection::GetList(
            array('LEFT_MARGIN'=>'ASC'),
            array(
                'ID' => $currentId,
                '>LEFT_MARGIN'=>$ar['LEFT_MARGIN'],
                '<RIGHT_MARGIN'=>$ar['RIGHT_MARGIN'],
            )
        );
        if ($rs->GetNext()) {
            return true;
        }
        return false;
    };

Комментариев нет:

Отправить комментарий

Mysql настройка режима

Для настройки режима mysql не обязательно править конфиги можно выполнить команду mysql > set global sql_mode = 'STRICT_TRANS_TAB...