Вместо getOptions()
, пожалуйста, попробуйте getCustomOptions()
или getProductOptionsCollection()
или getProductOptionsCollection()->load()
.
Редактировать
Я попробовал это на продукте, который, как я знал, имел варианты.
<?php
require 'app/Mage.php';
Mage::app();
$product = Mage::getModel('catalog/product')->load($productId);
foreach ($product->getProductOptions() as $option) {
print_r($option->debug());
}
И получил что-то вроде этого:
Array
(
[option_id] => 37
[product_id] => 8
[type] => multidate
[is_require] => 1
[sku] =>
[image_size_x] => 0
[image_size_y] => 0
[sort_order] => 1
[default_title] => Dates
[title] => Dates
)
Однако, getOptions()
также работал для меня, поэтому я не знаю, что происходит.
после редактирования
Путаница была одной из семантики. Простой продукт может иметь «пользовательские параметры», они позволяют создавать несколько полей формы, которые записываются как часть заказа. Конфигурируемый продукт использует «связанные продукты» для создания формы с условными полями.
Например, вы можете продавать носки большого зеленого, маленького зеленого или большого синего цвета, но не мелкие синие. С простым продуктом у вас будет поле для большого / маленького размера и поле для синего / зеленого цвета, которое позволяет клиенту выбирать маленький синий цвет, и это неправильно.
Таким образом, чтобы найти составные части настраиваемого объекта, вы можете сделать что-то вроде этого:
if ($product->isConfigurable()) {
$configurable = $product->getTypeInstance();
$childProducts = $product->getUsedProducts($product);
foreach ($childProducts as $child) {
// You have a $child now
}
}
Чтобы найти эквивалент getOptions()
, вам нужно:
if ($product->isConfigurable()) {
$configurable = $product->getTypeInstance();
$attributes = $configurable->getConfigurableAttributes($product);
// $attributes is a Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Type_Configurable_Attribute_Collection
foreach ($attributes as $attribute) {
// $attribute is a Mage_Catalog_Model_Product_Type_Configurable_Attribute
print $attribute->getLabel();
}
}
Mage_Catalog_Model_Product_Type_Configurable_Attribute
мало что может рассказать о себе.