1С-Битрикс — скрипт заполнения рейтинга товаров по свойствам

27.03.2021  09:19

Задача: сделать, чтобы у товаров со свойством Хит был рейтинг 5/5, у товаров со свойством Рекомендуем 4/5, у всех остальных - 0/5.

$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/..");
require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("iblock");
CModule::IncludeModule("catalog");
CModule::IncludeModule("sale");
if ( !$USER->IsAdmin() ) {
    $APPLICATION->AuthForm("");
}
set_time_limit(0);
ini_set('max_execution_time', '36000');
ini_set('memory_limit', '1024M');
$IBLOCK_ID = 17;
$filterFields = Array(
    0 => "ID",
    1 => "XML_ID",
    2 => "IBLOCK_ID",
    3 => "PROPERTY_HIT",
);
$arFilter = Array(
   "IBLOCK_ID"=>$IBLOCK_ID,
   "ACTIVE"=>"Y",
   // "ID"=>3315,//350378// для проверки на одном товаре
);
$res = CIBlockElement::GetList(Array("ID"=>"ASC"), $arFilter, false, false, $filterFields);
while ($ob = $res->GetNextElement()){
	$arFields = $ob->GetFields(); 
	$ID_ITEM = $arFields["ID"];
	unset($arPropsUpdate);
	$arProps = $ob->GetProperties();
	if(in_array("Хит",$arProps["HIT"]["VALUE"])){
		$arPropsUpdate["vote_sum"] = 500;
		$arPropsUpdate["rating"] = 5;
		$arPropsUpdate["vote_count"] = 100;
		CIBlockElement::SetPropertyValuesEx($ID_ITEM, $IBLOCK_ID, $arPropsUpdate);
	}
	elseif(in_array("Рекомендуем",$arProps["HIT"]["VALUE"])){
		$arPropsUpdate["vote_sum"] = 400;
		$arPropsUpdate["rating"] = 4;
		$arPropsUpdate["vote_count"] = 100;
	}
	else{
		$arPropsUpdate["vote_sum"] = 0;
		$arPropsUpdate["rating"] = 0;
		$arPropsUpdate["vote_count"] = 0;
	}
	if(!empty($arPropsUpdate)){
		CIBlockElement::SetPropertyValuesEx($ID_ITEM, $IBLOCK_ID, $arPropsUpdate);
		$c++;
	}
}
echo 'Товаров обновлено: '.$c;


Готово! Если вешать на крон, то в начале скрипта надо убрать проверку на админа.
Андрей Панёвин
Здравствуйте! Я — Андрей Панёвин и занимаюсь профессиональной разработкой сайтов на платформе 1С-Битрикс (исключительно программирование). Есть вопросы по статье? Могу подсказать и помочь по скайпу (andrey.panevin.ru), WhatsApp (+7-911-091-0670), Telegram (@panevin_ru) или перепиской в ВК.
1000 р./час. Часовой пояс — московский.






Помогла статья? На поездку на море (Охотское):


перейти в Блог

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 69  PHP 82  web-программирование 107  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю-:
Имя


email (не публикуется)