php – 如何获取Magento中可配置项的所有超级属性选项
发布时间:2020-12-13 16:22:18 所属栏目:PHP教程 来源:网络整理
导读:我的系统中有可配置的产品,包括颜色和大小.我写了下面的代码来获取数据,但它太慢了.在添加此位代码之前,页面加载时间低于2秒,添加后会跳转到15秒.当然有更快的方式来获取这些信息(我有2个超级属性,每个有大约10个选项) 我的代码: $productAttributeOptions
我的系统中有可配置的产品,包括颜色和大小.我写了下面的代码来获取数据,但它太慢了.在添加此位代码之前,页面加载时间低于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']; } } 解决方法
操作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']; } 这将获取所有属性代码.您可以更改查询,以便获取所需的数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |