在magento商店中挖掘标题

时间:2013-01-15 15:01:41

标签: magento

我已经在magento中实现了标题的打孔,即使我已经按照每个客户的方式工作,我也需要通过使其在diff cart项目计数上工作来更深入地使用这一级别。

这是我的代码。     

class AD_PageCache_Model_Container_Header extends Enterprise_PageCache_Model_Container_Abstract {

    protected function _getIdentifier() {
        return $this->_getCookieValue(Enterprise_PageCache_Model_Cookie::COOKIE_CUSTOMER, '');
    }

    // public function getCacheKeyInfo() {
    //  $info = parent::getCacheKeyInfo();
    //  die('boo');
    //  $info['cart_count'] = Mage::helper( 'checkout/cart' )->getCart()->getItemsCount();

    //  return $info;
    // }

    protected function _getCacheId() {
        //return 'CONTAINER_HEADER_' . md5($this->_placeholder->getAttribute('cache_id') . $this->_placeholder->getAttribute('cart_count') ) . '_' . $this->_getIdentifier();
        return 'CONTAINER_HEADER_' . md5( $this->_placeholder->getAttribute('cache_id') . $this->_getIdentifier() );
    }

    protected function _renderBlock() {
        $blockClass = $this->_placeholder->getAttribute('block');
        $template = $this->_placeholder->getAttribute('template');

        $block = new $blockClass;
        $block->setTemplate($template);
        return $block->toHtml();
    }

}

我从Magento上的挖孔线程中读到的内容是,当FPC缓存为请求提供服务时Mage应用程序未初始化,所以基本上添加占位符属性的方法无效,因为{{1}不会起作用,对吧?

即使它应该如何,但它似乎根本没有运行,就像我在那里放了Mage::helper( 'checkout/cart' )->getCart()->getItemsCount();电话但没有发生任何事情。

那么我错过了什么?如何检索购物车项目数,以便可以用它来构建缓存ID?

进展:我发现die(),但这只会在购物车更新时更改一次。之后它保持不变。这很奇怪,这感觉就像解决方案,但其行为却说不然。

我无法在会话中找到购物车项目数。因此,我目前看到的唯一方法是在更新时将购物车数量保存在会话中,然后在Enterprise_PageCache_Model_Cookie::COOKIE_CART中使用。

我发现观察者与购物车不一致。另外,更新事件是为了调度,但是为了删除,它不会。所以我想我可以添加我的观察者以某种方式对报价的价格更新,如果这与观察者一致吗?

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

请参阅我的类似问题:Full Page Cache invalidation on cart (quote) change

我放弃了实施,因为在我的情况下这是不可能的,但是我会进一步深入Enterprise_PageCache_Model_Container_Advanced_Quote,因为在报价内容发生变化的情况下,购物车块似乎会使用它来刷新自己

答案 1 :(得分:0)

我怀疑你将此保存到会话中的想法实际上是一个非常好的,并且最有可能可靠地工作