Magento получить значение атрибута выпадающего с php

0

У меня другая проблема с 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);
?>
Теги:
attributes
magento

1 ответ

0
Лучший ответ

Нашел ошибку сам...

Забыл загрузить два атрибута в массив $ 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);
?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню