Beispiel #1
0
 /**
  * Retrieve Attributes used in product listing
  *
  * @return array
  */
 public function getAttributesUsedInRecommender()
 {
     if ($this->_usedInRecommender === null) {
         $this->_usedInRecommender = [];
         $entityType = \Magento\Catalog\Model\Product::ENTITY;
         $attributesData = $this->_getResource()->getAttributesUsedInRecommender();
         $this->_eavConfig->importAttributesData($entityType, $attributesData);
         foreach ($attributesData as $attributeData) {
             $attributeCode = $attributeData['attribute_code'];
             $this->_usedInRecommender[$attributeCode] = $this->_eavConfig->getAttribute($entityType, $attributeCode);
         }
     }
     return $this->_usedInRecommender;
 }
Beispiel #2
0
 /**
  * Retrieve attribute codes using for flat
  *
  * @return array
  */
 public function getAttributeCodes()
 {
     if ($this->_attributeCodes === null) {
         $adapter = $this->_resource->getConnection('read');
         $this->_attributeCodes = [];
         foreach ($this->_flatAttributeGroups as $attributeGroupName) {
             $attributes = $this->_attributeConfig->getAttributeNames($attributeGroupName);
             $this->_systemAttributes = array_unique(array_merge($attributes, $this->_systemAttributes));
         }
         $bind = ['backend_type' => \Magento\Eav\Model\Entity\Attribute\AbstractAttribute::TYPE_STATIC, 'entity_type_id' => $this->getEntityTypeId()];
         $select = $adapter->select()->from(['main_table' => $this->getTable('eav_attribute')])->join(['additional_table' => $this->getTable('catalog_eav_attribute')], 'additional_table.attribute_id = main_table.attribute_id')->where('main_table.entity_type_id = :entity_type_id');
         $whereCondition = ['main_table.backend_type = :backend_type', $adapter->quoteInto('additional_table.is_used_for_promo_rules = ?', 1), $adapter->quoteInto('additional_table.used_in_product_listing = ?', 1), $adapter->quoteInto('additional_table.used_for_sort_by = ?', 1), $adapter->quoteInto('main_table.attribute_code IN(?)', $this->_systemAttributes)];
         if ($this->isAddFilterableAttributes()) {
             $whereCondition[] = $adapter->quoteInto('additional_table.is_filterable > ?', 0);
         }
         $select->where(implode(' OR ', $whereCondition));
         $attributesData = $adapter->fetchAll($select, $bind);
         $this->_eavConfig->importAttributesData($this->getEntityType(), $attributesData);
         foreach ($attributesData as $data) {
             $this->_attributeCodes[$data['attribute_id']] = $data['attribute_code'];
         }
         unset($attributesData);
     }
     return $this->_attributeCodes;
 }
Beispiel #3
0
 /**
  * Retrieve Attributes array used for sort by
  *
  * @return array
  */
 public function getAttributesUsedForSortBy()
 {
     if (is_null($this->_usedForSortBy)) {
         $this->_usedForSortBy = array();
         $entityType = \Magento\Catalog\Model\Product::ENTITY;
         $attributesData = $this->_getResource()->getAttributesUsedForSortBy();
         $this->_eavConfig->importAttributesData($entityType, $attributesData);
         foreach ($attributesData as $attributeData) {
             $attributeCode = $attributeData['attribute_code'];
             $this->_usedForSortBy[$attributeCode] = $this->_eavConfig->getAttribute($entityType, $attributeCode);
         }
     }
     return $this->_usedForSortBy;
 }