/** * Retrieve product type list * * @return array */ public function items() { $result = array(); foreach (Mage_Catalog_Model_Product_Type::getOptionArray() as $type => $label) { $result[] = array('type' => $type, 'label' => $label); } return $result; }
public function testGetOptionArray() { $options = Mage_Catalog_Model_Product_Type::getOptionArray(); $this->assertArrayHasKey(Mage_Catalog_Model_Product_Type::TYPE_SIMPLE, $options); $this->assertArrayHasKey(Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL, $options); $this->assertArrayHasKey(Mage_Catalog_Model_Product_Type::TYPE_GROUPED, $options); $this->assertArrayHasKey(Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE, $options); $this->assertArrayHasKey(Mage_Catalog_Model_Product_Type::TYPE_BUNDLE, $options); $this->assertArrayHasKey(Mage_Downloadable_Model_Product_Type::TYPE_DOWNLOADABLE, $options); }
public function getProductsCollection($filterData = '', $current_page = 0, $length = 50) { if (is_null($this->_productCollection) && $this->getId()) { $collection = Mage::getModel('gomage_feed/product_collection')->addAttributeToSelect('*'); $collection->addStoreFilter(Mage::app()->getStore()); if ($length != 0) { $collection->setPage($current_page + 1, $length); } $collection->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())->addMinimalPrice()->addFinalPrice()->addTaxPercents()->addUrlRewrite($this->getRootCategory()->getId()); if ($this->getVisibility()) { switch ($this->getVisibility()) { case Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE: $collection->setVisibility(array(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE)); break; case Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG: Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection); break; case Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_SEARCH: Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection); break; case Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH: Mage::getSingleton('catalog/product_visibility')->addVisibleInSiteFilterToCollection($collection); break; case 5: $collection->setVisibility(array(Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG)); break; case 6: $collection->setVisibility(array(Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_SEARCH)); break; } } if ($this->getUseLayer()) { $collection->joinField('is_in_stock', 'cataloginventory/stock_item', 'is_in_stock', 'product_id=entity_id'); $collection->addAttributeToFilter('is_in_stock', array('eq' => Mage_CatalogInventory_Model_Stock::STOCK_IN_STOCK)); } if ($this->getUseDisabled()) { Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection); $collection->addAttributeToFilter('status', array('in' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED)); } if ($this->getFilter()) { $filter_values = json_decode($this->getFilter(), true); $filters = array(); foreach ((array) $filter_values as $filter) { $code = trim(@$filter['attribute_code']); $condition = trim(@$filter['condition']); $value = trim(@$filter['value']); if ($code && $condition && $value != '') { if (!isset($filters[$code])) { $filters[$code] = array(); } if (!isset($filters[$code][$condition])) { $filters[$code][$condition] = array(); } $filters[$code][$condition][] = $value; } } foreach ($filters as $code => $filter) { if ($code == 'qty') { $collection->joinField('qty', 'cataloginventory/stock_item', 'qty', 'product_id=entity_id', '{{table}}.stock_id=1', 'left'); } foreach ($filter as $condition => $value) { if ($code == 'category_id') { foreach ($value as $_value) { $collection->prepareFeedCategoryFilter($condition, $_value); } } elseif ($code == 'product_type') { $all_product_type = Mage_Catalog_Model_Product_Type::getOptionArray(); $all_product_type = array_keys($all_product_type); if (isset($filter['neq'])) { $all_product_type = array_diff($all_product_type, $filter['neq']); } if (isset($filter['eq'])) { $all_product_type = array_intersect($all_product_type, $filter['eq']); } $collection->addAttributeToFilter('type_id', array('in' => $all_product_type)); break; } else { switch ($condition) { case 'eq': $condition = 'in'; break; case 'neq': $condition = 'nin'; break; case 'gt': case 'gteq': $value = max($value); break; case 'lt': case 'lteq': $value = min($value); break; case 'like': if (count($value) > 1) { $_attribute = array(); foreach ($value as $_value) { $_attribute[] = array('attribute' => $code, $condition => $_value); } $collection->addAttributeToFilter($_attribute); continue 2; } else { $value = $value[0]; } case 'nlike': foreach ($value as $_value) { $collection->addAttributeToFilter($code, array($condition => $_value)); } continue 2; break; } $collection->addAttributeToFilter($code, array($condition => $value)); } } } if (isset($filters['category_id'])) { $collection->addFeedCategoryFilter(); } } $this->_productCollection = $collection; } return $this->_productCollection; }