Нашел.
Проблема оказалась в том, что функция вызывалась из интерфейса администратора, этот код смотрит на LID ИБ в таком случае:
ADMIN_SECTION, SITE_DIR и SITE_SERVER_NAME - константы, их переопределить нельзя.
Значит только перед вызовом GetNex() использовать SetUrlTemplates() и передавать туда DETAIL_PGAE_URL, в котором предварительно в лоб заменить #SITE_DIR# на требуемое значение (можно воспользоваться логикой из функции ReplaceDetailUrl() по изъятию нужного DIR).
Костыль. Но скорее всего проблема в том, как мы пришли к этому, но это совсем другая история.
Проблема оказалась в том, что функция вызывалась из интерфейса администратора, этот код смотрит на LID ИБ в таком случае:
Код |
---|
public static function ReplaceDetailUrl($url, $arr, $server_name = false, $arrType = false) { /** @global CDatabase $DB */ global $DB; if($server_name) { $url = str_replace("#LANG#", $arr["LANG_DIR"], $url); if((defined("ADMIN_SECTION") && ADMIN_SECTION===true) || !defined("BX_STARTED")) { static $cache = array(); if(!isset($cache[$arr["LID"]])) { $db_lang = CLang::GetByID($arr["LID"]); $arLang = $db_lang->Fetch(); $cache[$arr["LID"]] = $arLang; } $arLang = $cache[$arr["LID"]]; $url = str_replace("#SITE_DIR#", $arLang["DIR"], $url); $url = str_replace("#SERVER_NAME#", $arLang["SERVER_NAME"], $url); } else { $url = str_replace("#SITE_DIR#", SITE_DIR, $url); $url = str_replace("#SERVER_NAME#", SITE_SERVER_NAME, $url); } } |
Значит только перед вызовом GetNex() использовать SetUrlTemplates() и передавать туда DETAIL_PGAE_URL, в котором предварительно в лоб заменить #SITE_DIR# на требуемое значение (можно воспользоваться логикой из функции ReplaceDetailUrl() по изъятию нужного DIR).
Костыль. Но скорее всего проблема в том, как мы пришли к этому, но это совсем другая история.