В настоящее время у меня есть следующий скрипт, который изменяет название продукта с определенным идентификатором.
Теперь я хочу переписать скрипт, чтобы он не обновлял атрибуты, а генерировал CSV-файл всего каталога с двумя столбцами.
- Product_SKU
- $ productnamingseo value
Как этого добиться?
Текущий рабочий скрипт php для 1 продукта:
ini_set('display_errors', 'On');
error_reporting(E_ALL);
require('../app/Mage.php');
Mage::app();
$product = Mage::getModel('catalog/product')->load(409728);
Mage::register('current_product', $product);
$seotitle = Mage::helper('seo')->getCurrentSeo();
$productnamestring = Mage::getSingleton('seo/object_product')->getTitle();
$findseo = array('/\h+inch (?:(i[357])-\w+|\h+\w+)?/', '/(\w+)#\w+/', '/(^| )(.{4,}) (.*)\2/', '/\s*-\s*$/');
$replaceseo = array('" $1', '$1', '$1$2 $3', '');
$productnamingseo = preg_replace($findseo, $replaceseo, $productnamestring);
$product->setName($productnamingseo);
$product->getResource()->saveAttribute($product, 'name');
Я уже пробовал:
ini_set('display_errors', 'On');
error_reporting(E_ALL);
require('../app/Mage.php');
Mage::app();
$file_path = "../var/import/productname.csv";
$mage_csv = new Varien_File_Csv();
$products_row = array();
$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*');
foreach ($products as $product) {
$prod = Mage::register('current_product', $product);
$seotitle = Mage::helper('seo')->getCurrentSeo();
$productnamestring = Mage::getSingleton('seo/object_product')->getTitle();
$findseo = array('/\h+inch (?:(i[357])-\w+|\h+\w+)?/', '/(\w+)#\w+/', '/(^| )(.{4,}) (.*)\2/', '/\s*-\s*$/');
$replaceseo = array('" $1', '$1', '$1$2 $3', '');
$productnamingseo = preg_replace($findseo, $replaceseo, $productnamestring);
$data = array();
$data['sku'] = $product->getSku();
$data['name'] = $productnamingseo;
$products_row[] = $data;
}
$mage_csv->saveData($file_path, $products_row);