/** * Product view block, don't cache if rendered with cart item update * * @param Mage_Catalog_Block_Product_View $block */ public function applyProductView(Mage_Catalog_Block_Product_Abstract $block) { // The "messages" block is session-dependent, don't cache if (Mage::helper('cache')->responseHasMessages()) { $block->setData('cache_lifetime', null); return; } // Cart stuff is session-dependent $request = $block->getRequest(); if ($request->getModuleName() == 'checkout' && $request->getControllerName() == 'cart' && $request->getActionName() == 'configure' && $request->getParam('id')) { $block->setData('cache_lifetime', null); return; } // Set cache keys $keys = $block->getCacheKeys(); $customer = Mage::getSingleton('customer/session')->getCustomer(); $keys = array_merge($keys, array($customer->getGroupId())); $product = $block->getProduct(); if ($product) { $tags = array(Mage_Catalog_Model_Product::CACHE_TAG . '_' . $block->getProduct()->getId()); $taxCalculator = Mage::getModel('tax/calculation'); $product = $block->getProduct(); $keys = array_merge($keys, array($product->getId(), $taxCalculator->getRate($taxCalculator->getRateRequest()->setProductClassId($product->getTaxClassId())))); } else { $tags = array(Mage_Catalog_Model_Product::CACHE_TAG); } $block->setData('cache_tags', $tags); $block->setData('cache_keys', $keys); }
/** * Retrive product * * @return Mage_Catalog_Model_Product */ public function getProduct() { $product = parent::getProduct(); if (is_null($product->getTypeInstance(true)->getStoreFilter($product))) { $product->getTypeInstance(true)->setStoreFilter(Mage::app()->getStore(), $product); } return $product; }
public function testGetProduct() { $this->assertSame($this->_product, $this->_block->getProduct()); }