/** * 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; }
/** * 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; }
/** * 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; }