- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblock.php
- Класс: CAllIBlock
- Вызов: CAllIBlock::getProductUrlValue
static function getProductUrlValue(array $element, bool $serverName): string
{
$result = '';
$id = (int)($element['ID'] ?? 0);
$iblockId = (int)($element['IBLOCK_ID'] ?? 0);
if ($iblockId <= 0 || $id <= 0)
{
return $result;
}
if (self::$catalogIncluded === null)
{
self::$catalogIncluded = Loader::includeModule('catalog');
}
if (!self::$catalogIncluded)
{
return $result;
}
$iblock = static::getProductIblockData($iblockId);
if ($iblock === null)
{
return $result;
}
$parentId = (int)($element['PROPERTY_' . $iblock['SKU_PROPERTY_ID'] . '_VALUE'] ?? self::getProductId($id, $iblockId));
if ($parentId <= 0)
{
return $result;
}
$parent = self::getUrlElementData($parentId);
if ($parent === null)
{
return $result;
}
return CIBlock::ReplaceDetailUrl(
$iblock['PRODUCT_IBLOCK']['DETAIL_PAGE_URL'],
[
'LANG_DIR' => (string)($element['LANG_DIR'] ?? ''),
'ID' => $parent['ID'],
'ELEMENT_ID' => $parent['ID'],
'CODE' => $parent['CODE'],
'ELEMENT_CODE' => $parent['CODE'],
'EXTERNAL_ID' => $parent['XML_ID'],
'IBLOCK_TYPE_ID' => $iblock['PRODUCT_IBLOCK']['IBLOCK_TYPE_ID'],
'IBLOCK_ID' => $parent['IBLOCK_ID'],
'IBLOCK_CODE' => $iblock['PRODUCT_IBLOCK']['CODE'],
'IBLOCK_EXTERNAL_ID' => $iblock['PRODUCT_IBLOCK']['XML_ID'],
'IBLOCK_SECTION_ID' => $parent['IBLOCK_SECTION_ID'],
'SECTION_CODE' => $parent['IBLOCK_SECTION_CODE'],
],
$serverName,
'E'
);
}