- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/lib/component/base.php
- Класс: BitrixIblockComponentBase
- Вызов: Base::onPrepareComponentParams
public function onPrepareComponentParams($params)
{
if (!is_array($params))
{
$params = [];
}
if (!isset($params['CURRENT_BASE_PAGE']))
{
$uri = new MainWebUri($this->request->getRequestUri());
$uri->deleteParams(MainHttpRequest::getSystemParameters());
$params['CURRENT_BASE_PAGE'] = $uri->getUri();
}
// parent component params for correct template load through ajax
if (!isset($params['PARENT_NAME']) && $parent = $this->getParent())
{
$params['PARENT_NAME'] = $parent->getName();
$params['PARENT_TEMPLATE_NAME'] = $parent->getTemplateName();
$params['PARENT_TEMPLATE_PAGE'] = $parent->getTemplatePage();
}
// save original parameters for further ajax requests
$this->arResult['ORIGINAL_PARAMETERS'] = $params;
if (isset($params['CUSTOM_SITE_ID']) && is_string($params['CUSTOM_SITE_ID']))
{
$this->setSiteId($params['CUSTOM_SITE_ID']);
}
// for AJAX_MODE set original ajax_id from initial load
if (isset($params['AJAX_MODE']) && $params['AJAX_MODE'] === 'Y')
{
$ajaxId = $this->request->get('AJAX_ID');
if (!empty($ajaxId))
{
$params['AJAX_ID'] = $ajaxId;
}
unset($ajaxId);
}
$params['AJAX_ID'] = trim((string)($params['AJAX_ID'] ?? ''));
$params['CACHE_TIME'] = (int)($params['CACHE_TIME'] ?? 36000000);
$params['IBLOCK_ID'] = (int)($params['IBLOCK_ID'] ?? 0);
$params['SECTION_ID'] = (int)($params['SECTION_ID'] ?? 0);
$params['SECTION_CODE'] = trim((string)($params['SECTION_CODE'] ?? ''));
$params['SECTION_URL'] = trim((string)($params['SECTION_URL'] ?? ''));
$params['STRICT_SECTION_CHECK'] = isset($params['STRICT_SECTION_CHECK']) && $params['STRICT_SECTION_CHECK'] === 'Y';
$params['CHECK_LANDING_PRODUCT_SECTION'] = (
isset($params['CHECK_LANDING_PRODUCT_SECTION'])
&& $params['CHECK_LANDING_PRODUCT_SECTION'] === 'Y'
);
$params['DETAIL_URL'] = trim((string)($params['DETAIL_URL'] ?? ''));
$params['BASKET_URL'] = trim((string)($params['BASKET_URL'] ?? ''));
if ($params['BASKET_URL'] === '')
{
$params['BASKET_URL'] = '/personal/basket.php';
}
$params['SHOW_SKU_DESCRIPTION'] = $params['SHOW_SKU_DESCRIPTION'] ?? 'N';
$params['HIDE_DETAIL_URL'] = isset($params['HIDE_DETAIL_URL']) && $params['HIDE_DETAIL_URL'] === 'Y';
$params['ACTION_VARIABLE'] = trim((string)($params['ACTION_VARIABLE'] ?? ''));
if ($params['ACTION_VARIABLE'] === '' || !preg_match(self::PARAM_TITLE_MASK, $params['ACTION_VARIABLE']))
{
$params['ACTION_VARIABLE'] = 'action';
}
$params['PRODUCT_ID_VARIABLE'] = trim((string)($params['PRODUCT_ID_VARIABLE'] ?? ''));
if (
$params['PRODUCT_ID_VARIABLE'] === ''
|| !preg_match(self::PARAM_TITLE_MASK, $params['PRODUCT_ID_VARIABLE'])
)
{
$params['PRODUCT_ID_VARIABLE'] = 'id';
}
$params['ACTION_COMPARE_VARIABLE'] = trim((string)($params['ACTION_COMPARE_VARIABLE'] ?? ''));
if (
$params['ACTION_COMPARE_VARIABLE'] === ''
|| !preg_match(self::PARAM_TITLE_MASK, $params['ACTION_COMPARE_VARIABLE'])
)
{
$params['ACTION_COMPARE_VARIABLE'] = $params['ACTION_VARIABLE'];
}
$params['PRODUCT_QUANTITY_VARIABLE'] = trim((string)($params['PRODUCT_QUANTITY_VARIABLE'] ?? ''));
if (
$params['PRODUCT_QUANTITY_VARIABLE'] === ''
|| !preg_match(self::PARAM_TITLE_MASK, $params['PRODUCT_QUANTITY_VARIABLE'])
)
{
$params['PRODUCT_QUANTITY_VARIABLE'] = 'quantity';
}
$params['PRODUCT_PROPS_VARIABLE'] = trim((string)($params['PRODUCT_PROPS_VARIABLE'] ?? ''));
if (
$params['PRODUCT_PROPS_VARIABLE'] === ''
|| !preg_match(self::PARAM_TITLE_MASK, $params['PRODUCT_PROPS_VARIABLE'])
)
{
$params['PRODUCT_PROPS_VARIABLE'] = 'prop';
}
// landing mode
if (
isset($params['ALLOW_SEO_DATA'])
&& ($params['ALLOW_SEO_DATA'] === 'Y' || $params['ALLOW_SEO_DATA'] === 'N')
)
{
$params['SET_TITLE'] = $params['ALLOW_SEO_DATA'] === 'Y';
$params['SET_BROWSER_TITLE'] = $params['ALLOW_SEO_DATA'];
$params['SET_META_KEYWORDS'] = $params['ALLOW_SEO_DATA'];
$params['SET_META_DESCRIPTION'] = $params['ALLOW_SEO_DATA'];
}
else
{
$params['SET_TITLE'] = ($params['SET_TITLE'] ?? '') !== 'N';
$params['SET_BROWSER_TITLE'] = isset($params['SET_BROWSER_TITLE']) && $params['SET_BROWSER_TITLE'] === 'N' ? 'N' : 'Y';
$params['SET_META_KEYWORDS'] = isset($params['SET_META_KEYWORDS']) && $params['SET_META_KEYWORDS'] === 'N' ? 'N' : 'Y';
$params['SET_META_DESCRIPTION'] = isset($params['SET_META_DESCRIPTION']) && $params['SET_META_DESCRIPTION'] === 'N' ? 'N' : 'Y';
}
$params['SET_LAST_MODIFIED'] = isset($params['SET_LAST_MODIFIED']) && $params['SET_LAST_MODIFIED'] === 'Y';
$params['ADD_SECTIONS_CHAIN'] = isset($params['ADD_SECTIONS_CHAIN']) && $params['ADD_SECTIONS_CHAIN'] === 'Y';
$params['DISPLAY_COMPARE'] = isset($params['DISPLAY_COMPARE']) && $params['DISPLAY_COMPARE'] === 'Y';
$params['COMPARE_PATH'] = trim((string)($params['COMPARE_PATH'] ?? ''));
$params['COMPARE_NAME'] = trim((string)($params['COMPARE_NAME'] ?? ''));
if ($params['COMPARE_NAME'] === '')
{
$params['COMPARE_NAME'] = 'CATALOG_COMPARE_LIST';
}
$params['USE_COMPARE_LIST'] = (isset($params['USE_COMPARE_LIST']) && $params['USE_COMPARE_LIST'] === 'Y' ? 'Y' : 'N');
$params['USE_PRICE_COUNT'] = isset($params['USE_PRICE_COUNT']) && $params['USE_PRICE_COUNT'] === 'Y';
$params['SHOW_PRICE_COUNT'] = (int)($params['SHOW_PRICE_COUNT'] ?? 1);
if ($params['SHOW_PRICE_COUNT'] <= 0)
{
$params['SHOW_PRICE_COUNT'] = 1;
}
$params['FILL_ITEM_ALL_PRICES'] = isset($params['FILL_ITEM_ALL_PRICES']) && $params['FILL_ITEM_ALL_PRICES'] === 'Y';
$params['USE_PRODUCT_QUANTITY'] = isset($params['USE_PRODUCT_QUANTITY']) && $params['USE_PRODUCT_QUANTITY'] === 'Y';
$params['ADD_PROPERTIES_TO_BASKET'] = isset($params['ADD_PROPERTIES_TO_BASKET']) && $params['ADD_PROPERTIES_TO_BASKET'] === 'N' ? 'N' : 'Y';
if (IblockModelPropertyFeature::isEnabledFeatures())
$params['ADD_PROPERTIES_TO_BASKET'] = 'Y';
if ($params['ADD_PROPERTIES_TO_BASKET'] === 'N')
{
$params['PRODUCT_PROPERTIES'] = array();
$params['OFFERS_CART_PROPERTIES'] = array();
}
$params['PARTIAL_PRODUCT_PROPERTIES'] = isset($params['PARTIAL_PRODUCT_PROPERTIES']) && $params['PARTIAL_PRODUCT_PROPERTIES'] === 'Y' ? 'Y' : 'N';
$params['OFFERS_SORT_FIELD'] = trim((string)($params['OFFERS_SORT_FIELD'] ?? ''));
if ($params['OFFERS_SORT_FIELD'] === '')
{
$params['OFFERS_SORT_FIELD'] = 'sort';
}
$params['OFFERS_SORT_ORDER'] = trim((string)($params['OFFERS_SORT_ORDER'] ?? ''));
if (
$params['OFFERS_SORT_ORDER'] === ''
|| !preg_match(self::SORT_ORDER_MASK, $params['OFFERS_SORT_ORDER'])
)
{
$params['OFFERS_SORT_ORDER'] = 'asc';
}
$params['OFFERS_SORT_FIELD2'] = trim((string)($params['OFFERS_SORT_FIELD2'] ?? ''));
if ($params['OFFERS_SORT_FIELD2'] === '')
{
$params['OFFERS_SORT_FIELD2'] = 'id';
}
$params['OFFERS_SORT_ORDER2'] = trim((string)($params['OFFERS_SORT_ORDER2'] ?? ''));
if (
$params['OFFERS_SORT_ORDER2'] === ''
|| !preg_match(self::SORT_ORDER_MASK, $params['OFFERS_SORT_ORDER2'])
)
{
$params['OFFERS_SORT_ORDER2'] = 'desc';
}
$params['PRICE_VAT_INCLUDE'] = !(isset($params['PRICE_VAT_INCLUDE']) && $params['PRICE_VAT_INCLUDE'] === 'N');
$params['CONVERT_CURRENCY'] = isset($params['CONVERT_CURRENCY']) && $params['CONVERT_CURRENCY'] === 'Y' ? 'Y' : 'N';
$params['CURRENCY_ID'] ??= '';
if (!is_scalar($params['CURRENCY_ID']))
{
$params['CURRENCY_ID'] = '';
}
$params['CURRENCY_ID'] = trim((string)$params['CURRENCY_ID']);
if ($params['CURRENCY_ID'] === '' || $params['CONVERT_CURRENCY'] === 'N')
{
$params['CONVERT_CURRENCY'] = 'N';
$params['CURRENCY_ID'] = '';
}
$params['OFFERS_LIMIT'] = (int)($params['OFFERS_LIMIT'] ?? 0);
if ($params['OFFERS_LIMIT'] < 0)
{
$params['OFFERS_LIMIT'] = 0;
}
$params['CACHE_GROUPS'] = trim((string)($params['CACHE_GROUPS'] ?? ''));
if ($params['CACHE_GROUPS'] !== 'N')
{
$params['CACHE_GROUPS'] = 'Y';
}
if (isset($params['~PRICE_CODE']))
{
$params['PRICE_CODE'] = $params['~PRICE_CODE'];
}
$params['PRICE_CODE'] ??= [];
if (!is_array($params['PRICE_CODE']))
{
$params['PRICE_CODE'] = [];
}
$params['SHOW_FROM_SECTION'] = isset($params['SHOW_FROM_SECTION']) && $params['SHOW_FROM_SECTION'] === 'Y' ? 'Y' : 'N';
if ($params['SHOW_FROM_SECTION'] === 'Y')
{
$params['SECTION_ELEMENT_ID'] = (int)($params['SECTION_ELEMENT_ID'] ?? 0);
$params['SECTION_ELEMENT_CODE'] = trim((string)($params['SECTION_ELEMENT_CODE'] ?? ''));
$params['DEPTH'] = (int)($params['DEPTH'] ?? 0);
if (empty($params['SECTION_ID']))
{
if ($params['SECTION_CODE'] !== '')
{
$sectionId = $this->getSectionIdByCode($params['SECTION_CODE'], $params['IBLOCK_ID']);
}
else
{
$sectionId = $this->getSectionIdByElement(
$params['SECTION_ELEMENT_ID'],
$params['SECTION_ELEMENT_CODE'],
$params['IBLOCK_ID']
);
}
$params['SECTION_ID'] = $sectionId;
}
}
$params['FILTER_IDS'] ??= [];
if (!is_array($params['FILTER_IDS']))
{
$params['FILTER_IDS'] = [$params['FILTER_IDS']];
}
return $params;
}