• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblock.php
  • Класс: CAllIBlock
  • Вызов: CAllIBlock::OnSearchGetURL
static function OnSearchGetURL($arFields)
{
	/** @global CDatabase $DB */
	global $DB;
	static $arIBlockCache = array();

	if($arFields["MODULE_ID"] !== "iblock" || mb_substr($arFields["URL"], 0, 1) !== "=")
		return $arFields["URL"];

	$IBLOCK_ID = intval($arFields["PARAM2"]);

	if(!array_key_exists($IBLOCK_ID, $arIBlockCache))
	{
		$res = $DB->Query("
			SELECT
				DETAIL_PAGE_URL,
				SECTION_PAGE_URL,
				CODE as IBLOCK_CODE,
				XML_ID as IBLOCK_EXTERNAL_ID,
				IBLOCK_TYPE_ID
			FROM
				b_iblock
			WHERE ID = ".$IBLOCK_ID."
		");
		$arIBlockCache[$IBLOCK_ID] = $res->Fetch();
	}

	if(!is_array($arIBlockCache[$IBLOCK_ID]))
		return "";

	$arFields["URL"] = LTrim($arFields["URL"], " =");
	parse_str($arFields["URL"], $arr);
	$arr = $arIBlockCache[$IBLOCK_ID] + $arr;
	$arr["LANG_DIR"] = $arFields["DIR"];

	if(mb_substr($arFields["ITEM_ID"], 0, 1) !== 'S')
		return CIBlock::ReplaceDetailUrl($arIBlockCache[$IBLOCK_ID]["DETAIL_PAGE_URL"], $arr, false, "E");
	else
		return CIBlock::ReplaceDetailUrl($arIBlockCache[$IBLOCK_ID]["SECTION_PAGE_URL"], $arr, false, "S");
}