Нашел.
Проблема оказалась в том, что функция вызывалась из интерфейса администратора, этот код смотрит на LID ИБ в таком случае:[CODE]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);
}
}[/CODE][B]ADMIN_SECTION[/B], [B]SITE_DIR[/B] и [B]SITE_SERVER_NAME[/B] - константы, их переопределить нельзя.
Значит только перед вызовом [B]GetNex()[/B] использовать [B]SetUrlTemplates()[/B] и передавать туда [B]DETAIL_PGAE_URL[/B], в котором предварительно в лоб заменить [B]#SITE_DIR#[/B] на требуемое значение (можно воспользоваться логикой из функции [B]ReplaceDetailUrl()[/B] по изъятию нужного [B]DIR[/B]).
Костыль. Но скорее всего проблема в том, как мы пришли к этому, но это совсем другая история.
Проблема оказалась в том, что функция вызывалась из интерфейса администратора, этот код смотрит на LID ИБ в таком случае:[CODE]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);
}
}[/CODE][B]ADMIN_SECTION[/B], [B]SITE_DIR[/B] и [B]SITE_SERVER_NAME[/B] - константы, их переопределить нельзя.
Значит только перед вызовом [B]GetNex()[/B] использовать [B]SetUrlTemplates()[/B] и передавать туда [B]DETAIL_PGAE_URL[/B], в котором предварительно в лоб заменить [B]#SITE_DIR#[/B] на требуемое значение (можно воспользоваться логикой из функции [B]ReplaceDetailUrl()[/B] по изъятию нужного [B]DIR[/B]).
Костыль. Но скорее всего проблема в том, как мы пришли к этому, но это совсем другая история.