+7 495 008 8452
  • Загрузка
Выберите ваш цвет

Как задать свое поведение тегам выгрузки модуля экспорта?

Есть вопросы, которые вы не смогли решить по нашим публикациям самостоятельно? Ждем ваше обращение в нашей службе техподдержки!

В модули экспорта добавлен интерфейс функции acritRedefine( $fieldIndex, $arItem["ID"], $profileId ), определив которую в файле /bitrix/php_interface/init.php вы можете определить значение соответствующего "Тега выгрузки". Получая на вход код "Тега выгрузи" (например, #PRICE#) и ID товара/товарного предложения, функция должна возвращать значение "Тега выгрузи". Собственно все. А теперь тост! пример.
function acritRedefine( $fieldIndex, $itemId, $profileId ){
	$result = false;

	if( $profileId != 5 ){
		if( ( $fieldIndex == "#PRICE#" ) && CModule::IncludeModule( "iblock" ) ){
			$dbElement = CIBlockElement::GetList(
				array(),
				array(
					"ID" => intval( $itemId )
				),
				false,
				false,
				array(
					"ID",
					"IBLOCK_ID",
					"CATALOG_GROUP_1",
				)
			);

			if( $arElement = $dbElement->GetNext() ){
				if( ( intval( $arElement["CATALOG_PRICE_1"] ) > 0 )
					&& ( $arElement["CATALOG_QUANTITY"] < 10 )
				){
					$result = $arElement["CATALOG_PRICE_1"] + 0.1 * $arElement["CATALOG_PRICE_1"];
				}
			}
		}
	}

	return $result;
}
А нет, оказалось, что не все... Теперь все то же самое можно использовать для категорий товаров (тех, что попадают в корневой тег и присутствуют у каждого элемента в теге ) Например, редефайн может выглядеть так:
function acritRedefine( $fieldIndex, $itemId, $profileId ){
    $result = false;
    
    if( ( $fieldIndex == "#MARKET_CATEGORY#" ) && CModule::IncludeModule( "iblock" ) && CModule::IncludeModule( "acrit.exportproplus" ) ){
		$obProfile = new CExportproplusProfileDB();
		$arProfile = $obProfile->GetByID( $profileId );
		
		if( $arProfile["TYPE"] == "ym_simple" ){
			$dbElement = CIBlockElement::GetList(
				array(),
				array(
					"ID" => intval( $itemId )
				),
				false,
				false,
				array(
					"ID",
					"IBLOCK_ID",
					"IBLOCK_SECTION_ID",
					"PROPERTY_INTERFEIS_PODKLYUCHENIYA",
				)
			);

			if( $arElement = $dbElement->GetNext() ){
				$dbSectionList = CIBlockSection::GetNavChain( $arElement["IBLOCK_ID"], $arElement["IBLOCK_SECTION_ID"] );
				
				$iElementParentSection = false;
				while( $arSection = $dbSectionList->GetNext() ){
					$iElementParentSection = $arSection["ID"];
					break;
				}
				
				if( $iElementParentSection && ( $iElementParentSection == 4 ) ){
					$obMarketCategory = new CExportproplusMarketDB();
					$arMarketCategory = $obMarketCategory->GetMarketList( $arProfile["MARKET_CATEGORY"]["CATEGORY"] );
					
					$arTerminalVals = array(
						"Беспроводные",
						"Bluetooth",
					);
					
					if( in_array( trim( $arElement["PROPERTY_INTERFEIS_PODKLYUCHENIYA_VALUE"] ), $arTerminalVals ) ){
						$marketCategory = "Все товары/Электроника/Портативная техника/Наушники и Bluetooth-гарнитуры";
					}
					else{
						$marketCategory = "Все товары/Компьютерная техника/Периферийные устройства/Компьютерные гарнитуры";
					}
					
					$bUseCategoryRedefine = false;
					if( ( $arProfile["USE_IBLOCK_CATEGORY"] != "Y" ) && ( $arProfile["USE_IBLOCK_PRODUCT_CATEGORY"] != "Y" ) && ( $arProfile["USE_MARKET_CATEGORY"] == "Y" ) ){
                        $bUseCategoryRedefine = true;
                    }
                    
					if( is_array( $arMarketCategory ) && !empty( $arMarketCategory ) && $bUseCategoryRedefine ){
						$result = array_search( $marketCategory, $arMarketCategory ) + 1;
					}					
				}
			}
		}	
	}

    return $result;
}
Теперь все. Наверное. Но это не точно)


Назад в раздел