Magento - 查询产品选项

时间:2011-02-17 19:11:14

标签: magento controller

我想编写一个控制器,找到给定产品的不同选项(例如,大,中,小,红,蓝等......)。

有人能告诉我我写入控制器的代码吗?

其他详情

我越来越近,但我仍然无法理解。这是我在控制器中编写的代码

$db = Mage::getModel('catalog/product')->load($productId);
print_r($db->getOptions());  // returns an empty array
echo $db->getHasOptions();  // echos 1

但是当我在第二行执行print_r()时,getOptions返回一个空数组。第三行echo是值1,这意味着应该有选项。

其他详细信息 我尝试了clockworkgeek的$db->getProductOptions()解决方案,但没有返回任何内容。我尝试了$db->getProductOptionsCollection(),得到了这个输出

Array
(
    [totalRecords] => 0
    [items] => Array
        (
        )

)

我的代码有什么问题,以至于它没有返回允许的产品选项?

2 个答案:

答案 0 :(得分:6)

请尝试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没有太多可以揭示自己。

答案 1 :(得分:0)

上述解决方案非常完美,我使用它解决了我的问题。我曾是    试图显示列表中的颜色。这是我的解决方案

if ($_product->isConfigurable()) {
$configurable = $_product->getTypeInstance();
$childProducts = $configurable->getUsedProducts($_product);

foreach ($childProducts as $child) {
    $sku = $child->getSku();
    $skuarr = explode('-',$sku);
    $col = trim($skuarr[1]);
?>
<span class="colorbar" style="background:<?php echo $col?>;" title="<?php echo $col?>">&nbsp;</span>       

    }
}