1
Custom макросы / Re: Обновление цен на сайте через CSV-выгрузку из торговой базы
« : 28 Марта 2019, 20:26:20 »
Получилось как то так:
Код: [Выделить]
//Составляем данные из CSV в массив.
$parts = array();
$goods_dump = file('goods_dump.csv');
foreach ($goods_dump as $line) {
$parts[] = explode(";", $line);
}
//Ключами элементов должны стать коды товара
$goods = array();
foreach ($parts as $value) {
$goods[$value[0]] = $value[1];
}
//Адрес корневой страницы каталога
define('CATALOG_URI', '/catalog-root-page/');
$hierarchy = umiHierarchy::getInstance();
$catID = $hierarchy->getIdByPath(CATALOG_URI);
if(!$catID) {
echo "Нет такого адреса на сайте: ".CATALOG_URI;
exit();
}
//Получаем все узлы
$nodes = $hierarchy->getChildrenTree($catID);
setNewValues($hierarchy, $nodes, $goods);
function setNewValues($hierarchy, $nodes, &$goods){
foreach ($nodes as $k => $node) {
if(empty($node)){
//Это объекты каталога
$item = $hierarchy->getElement($k);
echo $item->getName()."<br>";
//Замена значения sku значением из массива goods
$item->setValue("price", $goods[$item->getValue('sku')]);
continue;
}
//Это разделы каталога
$item = $hierarchy->getElement($k);
echo "<b>".$item->getName()."</b><br>";
setNewValues($hierarchy, $node, $goods);
}
}