Как узнать идентификатор (ID) раздела, если известен путь к нему через символьные коды?

Какой способ или функцию можно использовать, чтобы определить ID раздела, имея настройки ЧПУ текущего каталога и путь из символьных кодов, ведущий к разделу? У меня нет возможности использовать поиск ID по его коду из-за возможных совпадений кодов. Возможно, кто-то уже сталкивался с этой задачей и есть готовое решение или подсказка?
  • 16 мая 2024 г. 8:01
Ответы на вопрос 1
Вы можете использовать метод `GetList` класса `CIBlockSection` для получения ID раздела по его пути из символьных кодов. Ниже приведен пример кода на языке PHP:

```php
$iblockId = 1; // ID информационного блока
$sectionCodes = array('first-section-code', 'second-section-code'); // Путь из символьных кодов

$sectionId = false;

$nav = \Bitrix\Main\Loader::includeModule('iblock') ? new \CIBlockSection : null;
if ($nav) {
    $path = '';
    foreach ($sectionCodes as $code) {
        $path .= ($path ? '/' : '') . $code;
        $dbSections = $nav->GetList(array('ID' => 'ASC'), array('IBLOCK_ID' => $iblockId, 'CODE' => $code, 'SECTION_ID' => $sectionId), false, array('ID'));
        if ($section = $dbSections->Fetch()) {
            $sectionId = $section['ID']; // ID найденного раздела
        } else {
            $sectionId = false;
            break;
        }
    }
}

if ($sectionId) {
    echo 'ID раздела: ' . $sectionId;
} else {
    echo 'Раздел не найден';
}
```

В данном примере мы передаем ID информационного блока и массив символьных кодов, представляющих путь к разделу. Мы используем метод `GetList` для поиска каждого раздела по его символьному коду и получаем ID найденного раздела. Если разделы по указанным кодам не найдены, возвращается сообщение "Раздел не найден".
Похожие вопросы