- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/lib/component/elementlist.php
- Класс: BitrixIblockComponentElementList
- Вызов: ElementList::getTemplateMultiIblockParams
protected function getTemplateMultiIblockParams(&$params)
{
$params['ADDITIONAL_PICT_PROP'] = array();
$params['LABEL_PROP'] = array();
$params['LABEL_PROP_MOBILE'] = array();
$params['PROPERTY_CODE_MOBILE'] = array();
$params['ENLARGE_PROP'] = array();
$params['OFFER_TREE_PROPS'] = array();
foreach ($params as $name => $prop)
{
if (preg_match('/^ADDITIONAL_PICT_PROP_(d+)$/', $name, $match))
{
$iblockId = (int)$match[1];
if ($iblockId <= 0)
continue;
if ($params[$name] != '' && $params[$name] != '-')
{
$params['ADDITIONAL_PICT_PROP'][$iblockId] = $params[$name];
}
unset($params[$match[0]]);
}
elseif (preg_match('/^LABEL_PROP_(d+)$/', $name, $match))
{
$iblockId = (int)$match[1];
if ($iblockId <= 0)
continue;
if (!empty($params[$name]))
{
if (!is_array($params[$name]))
{
$params[$name] = array($params[$name]);
}
foreach ($params[$name] as $k => $v)
{
if ($v == '')
{
unset($params[$name][$k]);
}
}
$params['LABEL_PROP'][$iblockId] = $params[$name];
}
}
elseif (preg_match('/^LABEL_PROP_MOBILE_(d+)$/', $name, $match))
{
$iblockId = (int)$match[1];
if ($iblockId <= 0)
continue;
if (!empty($params[$name]) && is_array($params[$name]))
{
foreach ($params[$name] as $k => $v)
{
if ($v == '')
{
unset($params[$name][$k]);
}
}
if (!empty($params[$name]))
{
$params[$name] = array_flip($params[$name]);
}
$params['LABEL_PROP_MOBILE'][$iblockId] = $params[$name];
}
unset($params[$match[0]]);
}
elseif (preg_match('/^PROPERTY_CODE_MOBILE_(d+)$/', $name, $match))
{
$iblockId = (int)$match[1];
if ($iblockId <= 0)
continue;
if (!empty($params[$name]) && is_array($params[$name]))
{
foreach ($params[$name] as $k => $v)
{
if ($v == '')
{
unset($params[$name][$k]);
}
}
if (!empty($params[$name]))
{
$params[$name] = array_flip($params[$name]);
}
$params['PROPERTY_CODE_MOBILE'][$iblockId] = $params[$name];
}
unset($params[$match[0]]);
}
elseif (preg_match('/^ENLARGE_PROP_(d+)$/', $name, $match))
{
$iblockId = (int)$match[1];
if ($iblockId <= 0)
continue;
if ($params[$name] != '' && $params[$name] != '-')
{
$params['ENLARGE_PROP'][$iblockId] = $params[$name];
}
unset($params[$match[0]]);
}
}
if (!empty($params['SHOW_PRODUCTS']))
{
$usePropertyFeatures = IblockModelPropertyFeature::isEnabledFeatures();
foreach (array_keys($params['SHOW_PRODUCTS']) as $iblockId)
{
if (!isset($this->storage['IBLOCK_PARAMS'][$iblockId]) || !is_array($this->storage['IBLOCK_PARAMS'][$iblockId]))
{
$this->storage['IBLOCK_PARAMS'][$iblockId] = array();
}
// product iblock parameters
$this->storage['IBLOCK_PARAMS'][$iblockId]['ADD_PICT_PROP'] = $params['ADDITIONAL_PICT_PROP'][$iblockId] ?? '';
$this->storage['IBLOCK_PARAMS'][$iblockId]['LABEL_PROP'] = $params['LABEL_PROP'][$iblockId] ?? array();
$this->storage['IBLOCK_PARAMS'][$iblockId]['LABEL_PROP_MOBILE'] = $params['LABEL_PROP_MOBILE'][$iblockId] ?? array();
$this->storage['IBLOCK_PARAMS'][$iblockId]['PROPERTY_CODE_MOBILE'] = $params['PROPERTY_CODE_MOBILE'][$iblockId] ?? array();
$this->storage['IBLOCK_PARAMS'][$iblockId]['ENLARGE_PROP'] = $params['ENLARGE_PROP'][$iblockId] ?? '';
// offers iblock parameters
$catalog = CCatalogSku::GetInfoByProductIBlock($iblockId);
if (!empty($catalog))
{
$this->storage['IBLOCK_PARAMS'][$iblockId]['OFFERS_ADD_PICT_PROP'] = $params['ADDITIONAL_PICT_PROP'][$catalog['IBLOCK_ID']] ?? '';
}
}
unset($usePropertyFeatures);
}
}