Привет, у меня есть настройка нескольких магазинов magento и есть 2 файла csv, которые будут загружены на ежедневные базы, чтобы обновить цены, количество и другие атрибуты.Программно обновлять атрибуты magento на каждый магазин, но код обновляет все магазины
Я хотел бы создать два из следующих файлов, которые выполняются на cron, и каждый файл будет делать то же самое для каждого магазина отдельно.
В настоящее время данный код принимает взятие store1.csv и применяет его к обоим магазинам, также если я запустил этот код с store3.csv, он будет применять все цены и обновления в обоих магазинах.
Хотела для store1.csv только на обновление магазина 1 и store3.csv только обновление атрибутов магазина 3.
<?php
/*Move to our working directory
$home = getenv("HOME");
if (! $home) {
chdir('../'); // We hope we are somewhere where this works
} else {
chdir($home.'/project/html');
}*/
$csv = "store3.csv";
if (sizeof($argv) > 1) {
$csv = $argv[1];
}
//Turn On Error Reporting
error_reporting(E_ALL | E_STRICT);
//BOOTSTRAP MAGENTO
$mageFilename = '../app/Mage.php';
require_once $mageFilename;
//require_once 'relatedProducts.php';
Mage::app()->setCurrentStore(Mage::getModel('core/store')->setStoreId(3));
Mage::setIsDeveloperMode(true);
umask(0);
//OPEN CSV
if (($handle = fopen($csv, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 2000, "\t")) !== FALSE) {
$num = count($data);
if ($num < 1) continue; // skip blank lines
$sku = trim($data[0]);
if ($num < 2) {
echo "Skipping: ".$sku." not enough fields\n";
continue;
}
$qty = trim($data[1]);
$price = trim($data[2]);
// grab the product based on sku.
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku)->setStoreId(3);
if(!$product) {
print "Error: Invalid SKU, ".$sku."\n";
continue;
}
if ($product->getPrice() != $price) {
$product->setPrice($price);
$product->save();
}
// Grab the inventory(stock) model in order to update quantities.
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId())->setStoreId(3);
if ($stockItem->getData('qty') != $qty) {
$stockItem->setData('qty', $qty);
if ($qty > 0) {
$stockItem->setData('is_in_stock', 1);
}
$stockItem->save();
}
}
fclose($handle);
}
?>
Я пробовал это без везения, любой другой работы или, возможно, указывал мне на рабочий скрипт, а не на модуль, который выполняет эту функцию. Спасибо. – David
эта строка неверна: Mage :: app() -> setCurrentStore (Mage :: getModel ('core/store') -> setStoreId (3)); это должно быть Mage :: app() -> setCurrentStore (3); – PixieMedia