在magento store中穿孔标题

在magento store中穿孔标题,magento,Magento,我已经在magento中实现了标题的holepunching,尽管我已经在每个客户的基础上实现了它,但我需要能够通过使它在不同的购物车项目计数上工作来进一步提高这一级别 这是我的密码。 class AD_PageCache_Model_Container_Header extends Enterprise_PageCache_Model_Container_Abstract { protected function _getIdentifier() { return $

我已经在magento中实现了标题的holepunching,尽管我已经在每个客户的基础上实现了它,但我需要能够通过使它在不同的购物车项目计数上工作来进一步提高这一级别

这是我的密码。
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();
    }

}
我从holepunching threads on Magento中了解到,当FPC缓存为请求提供服务时,Mage应用程序没有初始化,因此基本上添加占位符属性的方法无法工作,因为
Mage::helper('checkout/cart')->getCart()->GetItemScont()不起作用,对吗

即使它应该是怎样的,但它似乎根本没有运行,就像我在那里放置了一个
die()
调用,但什么也没有发生

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

进展:我发现
Enterprise\u PageCache\u Model\u Cookie::Cookie\u CART
,但这只在CART更新时更改一次。在那之后它保持不变。这很奇怪,这感觉像是解决方案,但它的行为表明了另一种情况

我在会话中也找不到购物车项目计数。因此,我目前看到的唯一方法是在会话中保存购物车数量,无论它何时更新,然后在
\u getIdentifier()
中使用它

我发现观察者对cart不一致。此外,事件的更新是被调度的,但对于删除,则不会。所以我想我可以以某种方式将我的观察者添加到报价的价格更新中,如果有观察者的话

有什么建议吗?

参见我的类似问题:


我放弃了实施,因为在我的情况下这是不可能的,但我会深入研究
企业版\u页面缓存\u模型\u容器\u高级\u报价
,因为cart block似乎在报价内容发生变化时使用它来刷新自己

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

它使用
Enterprise\u PageCache\u Model\u Cookie::Cookie\u CART
在我的例子中,它不起作用,尽管我认为问题就在它里面。什么/如何?我不确定。此外,我们正在运行的EE的当前版本在
Model/Container
下甚至没有Advanced文件夹@Ashfame您正在运行EE 1.11吗?是的,当前版本是
EE 1.10.1.1
。我们的升级计划将在未来几周内到期。也许我不明白你到底有什么问题。首先,您应该从块
getCacheKeyInfo()
方法返回所需的数据,然后在占位符类的
\getCacheId()
中生成唯一键(即容器单个缓存id)。