• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/component/base.php
  • Класс: BitrixIblockComponentBase
  • Вызов: Base::getRandomRecommendation
protected function getRandomRecommendation($ids)
{
	$limit = $this->getRecommendationLimit($ids);

	if ($limit <= 0)
	{
		return $ids;
	}

	$randomIds = array();
	$recommendationId = 'random';
	$filter = $this->filterFields;

	$filterIds = array_merge($ids, $this->arParams['FILTER_IDS']);
	if (!empty($filterIds))
	{
		$filter['!ID'] = $filterIds;
	}

	if ($this->arParams['SHOW_FROM_SECTION'] === 'Y' && !empty($this->arParams['SECTION_ID']))
	{
		$filter['SECTION_ID'] = $this->arParams['SECTION_ID'];
	}

	$elementIterator = CIBlockElement::GetList(array('RAND' => 'ASC'), $filter, false, array('nTopCount' => $limit), array('ID'));
	while ($element = $elementIterator->Fetch())
	{
		$randomIds[] = $element['ID'];
	}

	if (!empty($randomIds))
	{
		$this->setCacheUsage(false);
	}

	foreach ($randomIds as $id)
	{
		if (!isset($this->recommendationIdToProduct[$id]))
		{
			$this->recommendationIdToProduct[$id] = $recommendationId;
		}
	}

	return array_merge($ids, $randomIds);
}