Exemplo n.º 1
0
 /**
  * Prepare crosssell items data
  *
  * @return Mage_Catalog_Block_Product_List_Crosssell
  */
 protected function _prepareData()
 {
     $product = Mage::registry('product');
     /* @var $product Mage_Catalog_Model_Product */
     $this->_itemCollection = $product->getCrossSellProductCollection()->addAttributeToSelect(Mage::getSingleton('Mage_Catalog_Model_Config')->getProductAttributes())->addAttributeToSort('position', 'asc')->addStoreFilter()->setVisibility(Mage::getSingleton('Mage_Catalog_Model_Product_Visibility')->getVisibleInCatalogIds());
     $this->_itemCollection->load();
     foreach ($this->_itemCollection as $product) {
         $product->setDoNotUseCategoryId(true);
     }
     return $this;
 }
Exemplo n.º 2
0
 /**
  * add join to select only in stock products
  *
  * @param  Mage_Catalog_Model_Resource_Product_Link_Product_Collection $collection collection to add filter
  *
  * @return Mage_CatalogInventory_Model_Resource_Stock
  */
 public function setInStockFilterToCollection($collection)
 {
     $this->_initConfig();
     $manageStock = Mage::getStoreConfig(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_MANAGE_STOCK);
     $cond = array('{{table}}.use_config_manage_stock = 0 AND {{table}}.manage_stock=1 AND {{table}}.is_in_stock=1', '{{table}}.use_config_manage_stock = 0 AND {{table}}.manage_stock=0');
     if ($manageStock) {
         $cond[] = '{{table}}.use_config_manage_stock = 1 AND {{table}}.is_in_stock=1';
     } else {
         $cond[] = '{{table}}.use_config_manage_stock = 1';
     }
     $collection->joinField('inventory_in_stock', 'cataloginventory/stock_item', 'is_in_stock', 'product_id=entity_id', join(' AND ', array('(' . join(') OR (', $cond) . ')', $this->getReadConnection()->quoteInto('stock_id = ? ', $this->_stock->getId()))));
     return $this;
 }
Exemplo n.º 3
0
 /**
  * Get current product ids
  *
  * @param Mage_Catalog_Model_Resource_Product_Link_Product_Collection $collection
  * @param string                                                      $idFieldName
  *
  * @return array
  */
 protected function _getProductIds($collection, $idFieldName)
 {
     if ($collection->getProduct() && $collection->getProduct()->getId()) {
         return array($collection->getProduct()->getData($idFieldName));
     }
     $ids = array();
     $product = Mage::registry('product');
     if ($product instanceof Mage_Catalog_Model_Product) {
         $ids[] = $product->getData($idFieldName);
     }
     if ($collection->getLinkModel()->getLinkTypeId() == Mage_Catalog_Model_Product_Link::LINK_TYPE_CROSSSELL) {
         $quote = Mage::getSingleton('checkout/session')->getQuote();
         foreach ($quote->getAllItems() as $item) {
             if ($product = $item->getProduct()) {
                 $ids[] = $product->getData($idFieldName);
             }
         }
     }
     return $ids;
 }
Exemplo n.º 4
0
 /**
  * Export collection to editable array
  *
  * @param Mage_Catalog_Model_Resource_Product_Link_Product_Collection $collection
  * @return array
  */
 protected function _collectionToEditableArray($collection)
 {
     $result = array();
     foreach ($collection as $linkedProduct) {
         $result[$linkedProduct->getId()] = array();
         foreach ($collection->getLinkModel()->getAttributes() as $attribute) {
             $result[$linkedProduct->getId()][$attribute['code']] = $linkedProduct->getData($attribute['code']);
         }
     }
     return $result;
 }