我的系统中有可配置的产品,包括颜色和大小。我写了下面的代码来获取数据,但它太慢了。在添加此位代码之前,页面加载时间低于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'];
}
}
答案 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'];
}
这将获取所有属性代码。您可以更改查询,以便获取所需的数据。