У меня есть еще одна проблема с Magento.
Я пытаюсь отсортировать все активные продукты в новые категории, что занимает много времени. Итак, теперь я хотел экспортировать продукты и сделать это немного быстрее, но функция экспорта Magento на самом деле не делает это для меня, так как не отображает правильные значения в правильных столбцах при экспорте в csv.
Поэтому я использую этот php-скрипт, который я нашел здесь в StackOverflow, и он, кажется, работает отлично. Но я пытаюсь получить значения из двух раскрывающихся атрибутов, которые мы создали, и, к сожалению, я не могу понять это правильно.
Помощь будет принята с благодарностью!
<?php
error_reporting(E_ALL | E_STRICT);
define('MAGENTO_ROOT', getcwd());
$mageFilename = MAGENTO_ROOT . '/app/Mage.php';
require_once $mageFilename;
Mage::setIsDeveloperMode(true);
ini_set('display_errors', 1);
Mage::app();
$products = Mage::getModel("catalog/product")->getCollection();
$products->addAttributeToSelect('category_ids');
$products->addAttributeToFilter('status', 1);//optional for only enabled products
$products->addAttributeToFilter('visibility', 4);//optional for products only visible in catalog and search
$fp = fopen('exports.csv', 'w');
$csvHeader = array("sku", "z_typ", "z_bereich", "category_ids");
fputcsv( $fp, $csvHeader,";");
foreach ($products as $product){
$sku = $product->getSku();
$z_typ = $product->getResource()->getAttribute('z_typ')->getFrontend()->getValue($product);
$z_bereich = $product->getResource()->getAttribute('z_bereich')->getFrontend()->getValue($product);
$categoryIds = implode(',', $product->getCategoryIds());//change the category separator if needed
fputcsv($fp, array($sku, $z_typ, $z_bereich, $categoryIds), ";");
}
fclose($fp);
?>
Это только возвращает «НЕТ» для двух атрибутов. Я также попытался следовать, что оставляет оба столбца пустыми:
<?php
error_reporting(E_ALL | E_STRICT);
define('MAGENTO_ROOT', getcwd());
$mageFilename = MAGENTO_ROOT . '/app/Mage.php';
require_once $mageFilename;
Mage::setIsDeveloperMode(true);
ini_set('display_errors', 1);
Mage::app();
$products = Mage::getModel("catalog/product")->getCollection();
$products->addAttributeToSelect('category_ids');
$products->addAttributeToFilter('status', 1);//optional for only enabled products
$products->addAttributeToFilter('visibility', 4);//optional for products only visible in catalog and search
$fp = fopen('exports.csv', 'w');
$csvHeader = array("sku", "z_typ", "z_bereich", "category_ids");
fputcsv( $fp, $csvHeader,";");
foreach ($products as $product){
$sku = $product->getSku();
$z_typ = $product->getAttributeText('z_typ');
$z_bereich = $product->getAttributeText('z_bereich');
$categoryIds = implode(',', $product->getCategoryIds());//change the category separator if needed
fputcsv($fp, array($sku, $z_typ, $z_bereich, $categoryIds), ";");
}
fclose($fp);
?>
Нашел ошибку сам …
Забыл загрузить два атрибута в массив $ products, чтобы он не мог их отобразить.
Спасибо за помощь в любом случае 🙂
Для тех, кто хочет использовать это, вот правильный код:
<?php
error_reporting(E_ALL | E_STRICT);
define('MAGENTO_ROOT', getcwd());
$mageFilename = MAGENTO_ROOT . '/app/Mage.php';
require_once $mageFilename;
Mage::setIsDeveloperMode(true);
ini_set('display_errors', 1);
Mage::app();
$products = Mage::getModel("catalog/product")->getCollection();
$products->addAttributeToSelect('category_ids');
$products->addAttributeToSelect('z_typ');
$products->addAttributeToSelect('z_bereich');
$products->addAttributeToFilter('status', 1);//optional for only enabled products
$products->addAttributeToFilter('visibility', 4);//optional for products only visible in catalog and search
$fp = fopen('exports.csv', 'w');
$csvHeader = array("sku", "z_typ", "z_bereich", "category_ids");
fputcsv( $fp, $csvHeader,";");
foreach ($products as $product){
$sku = $product->getSku();
$attributes = $product->getAttributes();
$z_typ = $attributes['z_typ']->getFrontend()->getValue($product);
$z_bereich = $attributes['z_bereich']->getFrontend()->getValue($product);
$categoryIds = implode(',', $product->getCategoryIds());//change the category separator if needed
fputcsv($fp, array($sku, $z_typ, $z_bereich, $categoryIds), ";");
}
fclose($fp);
?>
Других решений пока нет …