加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读