выборке элементов необходимо делать фильтр по сайту (поле LID), чтобы для различных элементов был установлена соответствующая директория сайта, но ID сайта в результате не меняется при передаче LID в фильтр GetList, почему так может быть?
Фильтр покажите. И где вызываете - публичка, консоль?
Вызывал в своем классе и в консоли в админке, фильтр: [ 'IBLOCK_ID' => $iblock['ID'], 'ACTIVE_DATE' => 'Y', 'ACTIVE' => 'Y', 'SECTION_CODE' => $iblock['LID'], 'LID' => $iblock['LID'], ] Результат один и тот же, LID возвращается всегда последнего сайта в списке
Так он и не должен меняться. Вы же передаете поле инфоблока в качестве значения. А в нем всегда одно и то же. Явно сайт передавайте. Но вообще это работает не так. Зачем вам LID в результатах выборки?
Мне нужно, чтобы при получении элемента инфоблока у него была корректная ссылка на детальную страницу с учетом сайта, поэтому думал, что при передаче LID в GetList, это будет учитываться
Она и будет - при выводе в публичке. Сайт передать не надо в этом случае. В админке ссылку нужно руками получать.
Выводить в публичке мне и не надо, но суть это не меняет, директория и ID сайта у меня во всех случаях возвращаются одни и те же, в целом уже решил переделать на более ручную подстановку корректной директории сайта заменой GetNext на Fetch и перезаписью LANG_DIR, что покрывает мою задачу
Посмотрите генерацию ссылки в yandex_run.php (есть такой файл в модуле catalog)
Модуля catalog нет, сделал так: while ($arItem = $items->Fetch()) { $arItem["LANG_DIR"] = $arSite["DIR"]; и потом просто CIBlock::ReplaceDetailUrl в результате чего получил корректные ссылки
В принципе, так тоже можно
Обсуждают сегодня