magento에서 헤더의 구멍 뚫기를 구현했으며 고객별로 작업을 수행했지만 diff 카트 항목 수에서도 작동하도록 하여이 한 수준 더 깊이 들어갈 수있는 기능이 필요합니다.
여기 내 코드가 있습니다.
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 앱이 초기화되지 않으므로 기본적으로 자리 표시 자 속성을 추가하는 방법이 작동하지 않습니다.
Mage::helper( 'checkout/cart' )->getCart()->getItemsCount();
작동하지 않습니까?
그리고 그것이 어떻게되어야하더라도, 내가 die()
전화를 걸었지만 아무 일도 없었던 것처럼 전혀 실행되지 않는 것 같습니다 .
그래서 내가 무엇을 놓치고 있습니까? 카트 항목 수를 검색하여 캐시 ID를 작성하는 데 사용할 수있는 방법은 무엇입니까?
진행 : 나는 찾았다
Enterprise_PageCache_Model_Cookie::COOKIE_CART
카트 업데이트시 한 번만 변경됩니다. 그 후에는 그대로 유지됩니다. 이것은 이상합니다. 솔루션처럼 느껴지지만 그 행동은 그렇지 않습니다.
장바구니 항목도 세션에서 찾을 수 없습니다. 따라서 현재이 작업을 수행하는 유일한 방법은 업데이트 할 때마다 카트 수량을 세션에 저장 한 다음에 사용하는 것입니다 _getIdentifier()
.
관찰자가 장바구니와 일치하지 않는 것을 발견했습니다. 또한 업데이트는 이벤트가 전달되지만 제거를 위해 전달되지 않습니다. 그래서 나는 관찰자를 갖는 것과 일관성이 있다면 어떻게 든 견적의 가격 업데이트에 내 관찰자를 추가 할 수 있다고 생각합니까?
또한 장바구니 (따옴표) 변경시 전체 페이지 캐시 무효화를 읽었 지만 사용하여 처리하지 않습니다.
Enterprise_PageCache_Model_Cookie::COOKIE_CART
문제가 그 안에 있다고 생각하지만 내 경우에는 잘 작동하지 않습니다. 무엇 / 어떻게? 확실하지 않습니다.
또한 현재 실행중인 EE의 현재 버전에는 고급 폴더가 없습니다
Model/Container
. 나는 사용하고있다EE 1.10.1.1
어떤 제안?
_getIdentifier
블록이 고객 장바구니 또는 고유 한 장바구니의 항목 수에 고유하지 않습니까?