如何获取Magento中可配置项的所有超级属性选项

时间:2011-10-13 22:28:56

标签: php magento

我的系统中有可配置的产品,包括颜色和大小。我写了下面的代码来获取数据,但它太慢了。在添加此位代码之前,页面加载时间低于2秒,添加后会跳转到15秒。当然有更快的方式来获取这些信息(我有2个超级属性,每个有10个选项)

我的代码:

$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'];
    }
}

1 个答案:

答案 0 :(得分:3)

操作getConfigurableAttributesAsArray非常慢。这是因为它对属性集合执行了加载。

解决此问题的最佳方法是使用自定义查询,该查询仅提取您需要的数据。像这样:

    $read = Mage::getSingleton('core/resource')->getConnection('core_read');

    $result = $read->query(
        "SELECT eav.attribute_code FROM eav_attribute as eav 
        LEFT JOIN catalog_product_super_attribute as super ON eav.attribute_id = super.attribute_id
        WHERE (product_id = " . $this->getProduct()->getId() . ");"
    );

    $attributeCodes = array();
    while ($row = $result->fetch()) {
        $attributeCodes[] = $row['attribute_code'];
    }

这将获取所有属性代码。您可以更改查询,以便获取所需的数据。