Раньше использовал грабер, которому скармливал артикулы товаров, а тот ходил куда надо и брал, что надо. Потом все это дело грузилось в 1с, а потом выгружалось на сайт. Долго и не удобно.
Решил сделать, чтобы при открытии карточки товара, если картинки нет, то она и искалась у поставщика на сайте, а если нашлась, то записывалась в карточку товара. Конечно, тот, кто открыл товар картинку не увидит в этот раз, но в следующий — да.
Код модуля:
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); if (!empty($arParams['SKU'])) {//есть товары, где нет артикула $SKU=$arParams['SKU']; if (!preg_match("/[^\d]{1}/", $SKU)) {//У этого поставщика в артикулах нет пробелов, тире, точек и т.п. для каждого типа свои условия. $img=file_get_contents("http://site.ru/$SKU.jpg"); if (!empty($img)){ $img_path=$_SERVER["DOCUMENT_ROOT"]."/images/grab/$SKU.jpg"; file_put_contents($img_path,$img); if(CModule::IncludeModule("iblock")) { $el = new CIBlockElement; $arLoadProductArray = Array( "ACTIVE" => "Y", "DETAIL_PICTURE" => CFile::MakeFileArray($img_path) ); $PRODUCT_ID = $arParams["ID"]; $res = $el->Update($PRODUCT_ID, $arLoadProductArray); } } } } ?>