• Модуль: 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);
	}
}