/** * Retrieve Product Attribute Value * * @param Mage_Catalog_Model_Product $product * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute * @return string */ public function getProductAttributeValue($product, $attribute) { if (!$product->hasData($attribute->getAttributeCode())) { return Mage::helper('Mage_Catalog_Helper_Data')->__('N/A'); } if ($attribute->getSourceModel() || in_array($attribute->getFrontendInput(), array('select', 'boolean', 'multiselect'))) { //$value = $attribute->getSource()->getOptionText($product->getData($attribute->getAttributeCode())); $value = $attribute->getFrontend()->getValue($product); } else { $value = $product->getData($attribute->getAttributeCode()); } return (string) $value == '' ? Mage::helper('Mage_Catalog_Helper_Data')->__('No') : $value; }
/** * Returns true if given attribute has options * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute * @return bool */ public function isAttributeWithOptions(Mage_Catalog_Model_Resource_Eav_Attribute $attribute) { $model = Mage::getModel($attribute->getSourceModel()); return $attribute->usesSource() && $attribute->getBackendType() == 'int' && $model instanceof Mage_Eav_Model_Entity_Attribute_Source_Table; }
/** * Checks if attribute is using options. * * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute * @return bool */ public function isUsingOptions($attribute) { $sourceModel = Mage::getModel($attribute->getSourceModel()); $backendType = $attribute->getBackendType(); return $attribute->usesSource() && ($backendType == 'int' && $sourceModel instanceof Mage_Eav_Model_Entity_Attribute_Source_Table) || $backendType == 'varchar' && $attribute->getFrontendInput() == 'multiselect'; }
/** * Retrieve Product Attribute Value * * @param Mage_Catalog_Model_Product $product * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute * @return string */ public function getProductAttributeValue($product, $attribute) { if (!$product->hasData($attribute->getAttributeCode())) { return ' '; } if ($attribute->getSourceModel() || in_array($attribute->getFrontendInput(), array('select', 'boolean', 'multiselect'))) { //$value = $attribute->getSource()->getOptionText($product->getData($attribute->getAttributeCode())); $value = $attribute->getFrontend()->getValue($product); } else { $value = $product->getData($attribute->getAttributeCode()); } return $value ? $value : ' '; }
/** * Returns attribute type for indexation. * * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute Attribute * * @return string */ protected function _getAttributeType($attribute) { $type = 'string'; if ($attribute->getBackendType() == 'int' || $attribute->getFrontendClass() == 'validate-digits') { $type = 'integer'; } elseif ($attribute->getBackendType() == 'decimal') { $type = 'double'; } elseif ($attribute->getSourceModel() == 'eav/entity_attribute_source_boolean') { $type = 'boolean'; } elseif ($attribute->getBackendType() == 'datetime') { $type = 'date'; } elseif ($attribute->usesSource() && $attribute->getSourceModel() === null) { $type = 'integer'; } else { if ($attribute->usesSource()) { $type = 'string'; } } return $type; }
/** * Returns attribute type for indexation. * * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute * @return string */ protected function _getAttributeType($attribute) { $type = 'string'; if ($attribute->getBackendType() == 'decimal') { $type = 'double'; } elseif ($attribute->getSourceModel() == 'eav/entity_attribute_source_boolean') { $type = 'boolean'; } elseif ($attribute->getBackendType() == 'datetime') { $type = 'date'; } elseif ($this->_helper->isUsingOptions($attribute)) { $type = 'option'; // custom type to build an object for option id (facets) and label (search) } elseif ($attribute->usesSource() || $attribute->getFrontendClass() == 'validate-digits') { $type = 'integer'; } return $type; }
/** * Retrieve data to be insterted after processing attribute * * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute * @param int $storeId * @return array */ protected function getInsertValues($attribute, $storeId) { $options = array(); if ($attribute->getSourceModel()) { $options = $attribute->getSource()->getAllOptions(); } else { $collection = Mage::getResourceModel('eav/entity_attribute_option_collection')->setStoreFilter($storeId)->setPositionOrder('asc')->setAttributeFilter($attribute->getId())->load(); $options = $collection->toOptionArray(); } $data = array(); foreach ($options as $option) { // Generate url value $urlValue = $this->getHelper()->transliterate($option['label']); // Check if this url key is taken and add -{count} $count = 0; $origUrlValue = $urlValue; do { $found = false; foreach ($data as $line) { if ($line['url_value'] == $urlValue) { $found = true; } } if ($found) { $urlValue = $origUrlValue . '-' . ++$count; } } while ($found); $data[] = array('attribute_code' => $attribute->getAttributeCode(), 'attribute_id' => $attribute->getId(), 'store_id' => $storeId, 'option_id' => $option['value'], 'url_key' => $this->getHelper()->transliterate($attribute->getStoreLabel($storeId)), 'url_value' => $urlValue); } return $data; }