2015-06-23 3 views
1

Это использование Magento 1.9.Получите опции продукта для каждого продукта в каталоге Magento

Я пытаюсь создать скрипт, который выводит все параметры продукта для каждого продукта в каталоге в файл CSV.

Я попытался с помощью кода на этой странице: http://www.atwix.com/magento/configurable-product-attributes/

Для этого кода:

$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'color'); 
foreach ($attribute->getSource()->getAllOptions(true) as $option) { 
    echo $option['value'] . ' ' . $option['label'] . "\n"; 
} 

я не получаю никакого вывода, чего-так когда-либо.

Для этого кода:

$productAttributeOptions = $product->getTypeInstance(true)->getConfigurableAttributesAsArray($product); 
$attributeOptions = array(); 
foreach ($productAttributeOptions as $productAttribute) { 
    foreach ($productAttribute['values'] as $attribute) { 
     $attributeOptions[$productAttribute['label']][$attribute['value_index']] = $attribute['store_label']; 
    } 
} 

Я получаю эту ошибку:

Fatal error: Call to undefined method Mage_Catalog_Model_Product_Type_Simple::getConfigurableAttributesAsArray() in /home/tws2/public_html/getopts.php on line 71

Ive был не в состоянии найти что-нибудь еще в Интернете для получения в параметрах продукта продукта с PHP код.

Может кто-нибудь объяснить мне, как использовать PHP для получения всех данных о параметрах продукта для каждого продукта в каталоге, поэтому я могу вывести все эти данные в файл CSV.

Целью этого является передача данных параметров продукта на идентичный сервер Magento с одним и тем же каталогом, просто отсутствующие данные о параметрах продукта. После того, как у меня есть файл CSV с параметрами продукта, я собирался сделать еще один скрипт, чтобы записать их на идентичный сервер Magento. Вот как мне посоветовали выполнить эту задачу самостоятельно, если у вас есть лучшее предложение, пожалуйста, дайте мне знать.

ответ

2

Чтобы получить конфигурируемые варианты всего каталога, попробуйте это

$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*'); 

    foreach ($collection as $product) { 
    foreach ($product->getProductOptionsCollection() as $o) { 
    $values = $o->getValues(); 

    foreach ($values as $v) { 
     $v['product_id'] = $product->getEntityId(); 
     echo "<pre>";print_r($v->getData()); 
    } 
    } 
} 
+0

Я начинаю с 'если ($ продукты = Mage :: getModel ('Каталог/продукта') -> getCollection() -> addAttributeToSelect ('*')) {'then' foreach ($ products as $ product) {', а затем я добавляю ваш код из строки 'if ($ product-> getId()) {', и у меня есть проблема, я никогда не получаю мимо строки 'if ($ product-> hasCustomOptions()) {' несмотря на то, что у меня есть 1000 продуктов, и большинство из них имеют настраиваемые параметры. Знаете ли вы, что происходит не так? – Jimmery

+0

, пожалуйста, ознакомьтесь с правилом использования переменных. внутри foreach его '$ _product', и я использовал' $ product' –

+0

, можете ли вы настроить свой код, чтобы он работал для всех продуктов в каталоге, а не только для одного? – Jimmery

Смежные вопросы