Нашел.
Проблема оказалась в том, что функция вызывалась из интерфейса администратора, этот код смотрит на 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).
Костыль. Но скорее всего проблема в том, как мы пришли к этому, но это совсем другая история.