2011-10-13 114 views
3

我在我的系統中配置了由顏色和大小組成的產品。我寫了下面的代碼來獲取數據,但它太慢了。在添加這段代碼之前,頁面加載時間低於2秒,添加後跳轉到15秒。當然還有更快的方法來獲取這些信息(我有大約每10個選項2超級屬性)如何獲取Magento中可配置項目的所有超級屬性選項

我的代碼:

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

回答

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

這將獲取所有屬性代碼。您可以更改查詢,以便獲取您需要的數據。

相關問題