/** * Retrieve loaded Giveaway Product Collection * * @return Mage_Eav_Model_Entity_Collection_Abstract */ protected function _getGiveawayCollection() { if (is_null($this->_productCollection)) { $oProduct = Mage::getModel('catalog/product'); /* @var $oCollection Mage_Catalog_Model_Resource_Product_Collection */ $this->_productCollection = $oProduct->getResourceCollection(); $oSitewardsGiveawayHelper = Mage::helper('sitewards_giveaway'); $sGiveawayAttributeCode = $oSitewardsGiveawayHelper->getGiveawayIdentifierName(); $this->_productCollection->addAttributeToFilter($sGiveawayAttributeCode, true); $this->_productCollection->addAttributeToSelect('*'); } return $this->_productCollection; }
/** * Retrieve loaded category collection * * @return Mage_Eav_Model_Entity_Collection_Abstract */ public function getLoadedProductCollectionpro($id) { // benchmarking $memory = memory_get_usage(); $time = microtime(); if (is_null($this->_productCollection)) { $layer = $this->getLayer(); if ($this->getShowRootCategory()) { $this->setCategoryId(Mage::app()->getStore()->getRootCategoryId()); } // if this is a product view page if (Mage::registry('product')) { // get collection of categories this product is associated with $categories = Mage::registry('product')->getCategoryCollection()->setPage(1, 1)->load(); // if the product is associated with any category if ($categories->count()) { // show products from this category $this->setCategoryId(current($categories->getIterator())); } } $origCategory = null; if ($this->getCategoryId()) { $category = Mage::getModel('catalog/category')->load($this->getCategoryId()); if ($category->getId()) { $origCategory = $layer->getCurrentCategory(); $layer->setCurrentCategory($category); $this->addModelTags($category); } } /* @var $layer Mage_Catalog_Model_Layer */ /* @var $layer Mage_Catalog_Model_Layer */ //$this->_productCollection = $layer->getProductCollection(); /** @var $collection Mage_Catalog_Model_Resource_Product_Collection */ $category = Mage::getModel('catalog/category')->load($this->_theCat); $this->_productCollection = Mage::getResourceModel('catalog/product_collection'); // join sales order items column and count sold products $expression = new Zend_Db_Expr("SUM(oi.qty_ordered)"); $condition = new Zend_Db_Expr("e.entity_id = oi.product_id AND oi.parent_item_id IS NULL"); $this->_productCollection->addAttributeToSelect('*')->getSelect()->join(array('oi' => $this->_productCollection->getTable('sales/order_item')), $condition, array('sales_count' => $expression))->group('e.entity_id'); //->order('sales_count' . ' ' . 'desc'); $this->_productCollection->addFieldToFilter('status', '1'); //join brand if ($this->getRequest()->getParam('brands_ids') != null and $this->getRequest()->getParam('brands_ids') != 0) { $brand_id = $this->getRequest()->getParam('brands_ids'); $condition = new Zend_Db_Expr("br.option_id = {$brand_id} AND br.product_ids = e.entity_id"); $this->_productCollection->getSelect()->join(array('br' => $this->_productCollection->getTable('shopbybrand/brand')), $condition, array('brand_id' => 'br.option_id')); } // join category $condition = new Zend_Db_Expr("e.entity_id = ccp.product_id"); $condition2 = new Zend_Db_Expr("c.entity_id = ccp.category_id"); $this->_productCollection->getSelect()->join(array('ccp' => $this->_productCollection->getTable('catalog/category_product')), $condition, array())->join(array('c' => $this->_productCollection->getTable('catalog/category')), $condition2, array('cat_id' => 'c.entity_id')); $condition = new Zend_Db_Expr("c.entity_id = cv.entity_id AND ea.attribute_id = cv.attribute_id"); // cutting corners here by hardcoding 3 as Category Entiry_type_id $condition2 = new Zend_Db_Expr("ea.entity_type_id = 3 AND ea.attribute_code = 'name'"); $this->_productCollection->getSelect()->join(array('ea' => $this->_productCollection->getTable('eav/attribute')), $condition2, array())->join(array('cv' => $this->_productCollection->getTable('catalog/category') . '_varchar'), $condition, array('cat_name' => 'cv.value')); $id = $this->getRequest()->getParam('id'); $this->_productCollection->getSelect()->where('c.entity_id = ?', $id)->limit(20); } return $this->_productCollection; }
/** * Apply filter to collection and add not skipped attributes to select. * * @param Mage_Eav_Model_Entity_Collection_Abstract $collection * @return Mage_Eav_Model_Entity_Collection_Abstract */ protected function _prepareEntityCollection(Mage_Eav_Model_Entity_Collection_Abstract $collection) { if (!isset($this->_parameters[Mage_ImportExport_Model_Export::FILTER_ELEMENT_GROUP]) || !is_array($this->_parameters[Mage_ImportExport_Model_Export::FILTER_ELEMENT_GROUP])) { $exportFilter = array(); } else { $exportFilter = $this->_parameters[Mage_ImportExport_Model_Export::FILTER_ELEMENT_GROUP]; } $exportAttrCodes = $this->_getExportAttrCodes(); foreach ($this->filterAttributeCollection($this->getAttributeCollection()) as $attribute) { $attrCode = $attribute->getAttributeCode(); // filter applying if (isset($exportFilter[$attrCode])) { $attrFilterType = Mage_ImportExport_Model_Export::getAttributeFilterType($attribute); if ($attrCode == 'sku') { $collection->addAttributeToFilter($attrCode, array('in' => $exportFilter[$attrCode])); } elseif (Mage_ImportExport_Model_Export::FILTER_TYPE_SELECT == $attrFilterType) { if (is_scalar($exportFilter[$attrCode]) && trim($exportFilter[$attrCode])) { $collection->addAttributeToFilter($attrCode, array('eq' => $exportFilter[$attrCode])); } } elseif (Mage_ImportExport_Model_Export::FILTER_TYPE_INPUT == $attrFilterType) { if (is_scalar($exportFilter[$attrCode]) && trim($exportFilter[$attrCode])) { $collection->addAttributeToFilter($attrCode, array('like' => "%{$exportFilter[$attrCode]}%")); } } elseif (Mage_ImportExport_Model_Export::FILTER_TYPE_DATE == $attrFilterType) { if (is_array($exportFilter[$attrCode]) && count($exportFilter[$attrCode]) == 2) { $from = array_shift($exportFilter[$attrCode]); $to = array_shift($exportFilter[$attrCode]); if (is_scalar($from) && !empty($from)) { $date = Mage::app()->getLocale()->date($from, null, null, false)->toString('MM/dd/YYYY'); $collection->addAttributeToFilter($attrCode, array('from' => $date, 'date' => true)); } if (is_scalar($to) && !empty($to)) { $date = Mage::app()->getLocale()->date($to, null, null, false)->toString('MM/dd/YYYY'); $collection->addAttributeToFilter($attrCode, array('to' => $date, 'date' => true)); } } } elseif (Mage_ImportExport_Model_Export::FILTER_TYPE_NUMBER == $attrFilterType) { if (is_array($exportFilter[$attrCode]) && count($exportFilter[$attrCode]) == 2) { $from = array_shift($exportFilter[$attrCode]); $to = array_shift($exportFilter[$attrCode]); if (is_numeric($from)) { $collection->addAttributeToFilter($attrCode, array('from' => $from)); } if (is_numeric($to)) { $collection->addAttributeToFilter($attrCode, array('to' => $to)); } } } } if (in_array($attrCode, $exportAttrCodes)) { $collection->addAttributeToSelect($attrCode); } } return $collection; }
/** * Add image attribute and apply sort fields to product collection * * @param Mage_Eav_Model_Entity_Collection_Abstract $collection * @return Mage_XmlConnect_Block_Catalog_Product_List */ protected function _prepareCollection($collection) { /** * Apply sort params */ $request = $this->getRequest(); $isOrderValueExist = false; foreach ($request->getParams() as $key => $value) { if (0 === strpos($key, parent::REQUEST_SORT_ORDER_PARAM_PREFIX)) { $key = str_replace(parent::REQUEST_SORT_ORDER_PARAM_PREFIX, '', $key); if ($value != 'desc') { $value = 'asc'; } if ($key == 'relevance') { $collection->getSelect()->order("relevance {$value}"); } else { $collection->addAttributeToSort($key, $value); } $isOrderValueExist = true; } } if (!$isOrderValueExist && $collection instanceof Mage_CatalogSearch_Model_Resource_Fulltext_Collection) { $collection->getSelect()->order("relevance desc"); } $collection->addAttributeToSelect(array('image', 'name', 'description')); return $this; }
/** * Add image attribute and apply sort fields to product collection * * @param Mage_Eav_Model_Entity_Collection_Abstract $collection * @return Mage_XmlConnect_Block_Catalog_Product_List */ protected function _prepareCollection($collection) { /** * Apply sort params */ $reguest = $this->getRequest(); foreach ($reguest->getParams() as $key => $value) { if (0 === strpos($key, parent::REQUEST_SORT_ORDER_PARAM_REFIX)) { $key = str_replace(parent::REQUEST_SORT_ORDER_PARAM_REFIX, '', $key); if ($value != 'desc') { $value = 'asc'; } $collection->addAttributeToSort($key, $value); } } $collection->addAttributeToSelect(array('image', 'name', 'description')); return $this; }
/** * Add not skipped attributes to select * * @param Mage_Eav_Model_Entity_Collection_Abstract $collection * @return Mage_Eav_Model_Entity_Collection_Abstract */ protected function _addAttributesToCollection(Mage_Eav_Model_Entity_Collection_Abstract $collection) { $attributeCodes = $this->_getExportAttributeCodes(); $collection->addAttributeToSelect($attributeCodes); return $collection; }