Intereting Posts
Использование идентификатора объекта Mongodb в качестве идентификатора документа? Проверьте, существует ли свойство в магически заданных свойствах Как заполнить форму PDF в php Просто обновите мой сайт до версии 1.9.3.0 и получите ошибку SQLSTATE : Столбец не найден: 1054 Неизвестный столбец 'catalog_product_entity_group_price.is_percent' Поиск модели yii с daterange для метки времени Встроенный Javascript-интерпретатор для php Не удалось получить данные объекта Yii2, возвращенные как Json Эквивалент PHP для партитур / коллекций шаблонов RoR Простая помощь PHP: если ($ Var1 = в списке ($ List) и $ Cond2) – это возможно? как получить значения переключателя, который был проверен, jquery В cakephp, как я могу найти с условиями в соответствующей области? PHP – Как построить список древовидной структуры? Можно ли получить специальную информацию о локальном диске с PHP? Ответ jquery ajax удаляет символ + Как я могу исправить флеш-флагом 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']; } } 

Операция 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']; } 

Это позволит получить все коды атрибутов. Вы можете изменить запрос, чтобы получить нужные данные.