Magento'da üstbilginin delinmesini uyguladım ve müşteri bazında çalışmama rağmen, farklı sepeti öğe sayıları üzerinde çalışmasını sağlayarak bu seviyeyi daha derine getirme yeteneğine ihtiyacım var.
İşte kodum.
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'daki delik delme iş parçacıklarından okuduğumdan benim anlayışım, FPC önbelleği isteği sunarken Mage uygulamasının başlatılmamasıdır, bu nedenle temelde bir yer tutucu özniteliği ekleme yöntemi çalışamaz, çünkü
Mage::helper( 'checkout/cart' )->getCart()->getItemsCount();
çalışmaz, değil mi?
Ve nasıl olması gerektiği gibi olsa da, die()
oraya bir çağrı yerleştirdiğim gibi hiç çalışmıyor gibi görünüyordu ama hiçbir şey olmadı.
Peki eksik olan ne? Önbellek kimliğini oluşturmak için kullanılabilmesi için alışveriş sepeti öğelerinin sayısını nasıl alabilirim?
İlerleme Durumu: Buldum
Enterprise_PageCache_Model_Cookie::COOKIE_CART
ancak bu, sepet güncellenmesi üzerine yalnızca bir kez değişir. Bundan sonra aynı kalır. Bu garip, çözüm gibi geliyor ama davranışı aksini söylüyor.
Oturumda alışveriş sepeti öğelerini de bulamadım. Bu yüzden şu anda bunu yapmanın tek yolu, her güncellemede sepeti miktarını kaydetmek ve daha sonra kullanmak olacaktır _getIdentifier()
.
Gözlemcilerin araba için tutarsız olduğunu buldum. Ayrıca, olayların güncellenmesi gönderilir, ancak kaldırılması için gönderilmez. Yani sanırım gözlemcimi teklifin fiyat güncellemesine ekleyebilirim, eğer gözlemcilerin tutarlı olması durumunda?
Ayrıca, Tam Sayfa Önbellek geçersiz kılma geçersizleştirme (alıntı) değişikliği okudum ama itt kullanarak kolları
Enterprise_PageCache_Model_Cookie::COOKIE_CART
bu benim durumumda iyi çalışmıyor, ancak sorunun içinde olduğunu düşünüyorum. Ne nasıl? Emin değilim.
Ayrıca çalıştırdığımız EE'nin mevcut sürümü altında Gelişmiş klasörü bile yok
Model/Container
. Ben kullanıyorumEE 1.10.1.1
Herhangi bir öneri?
_getIdentifier
, blok müşteri sepeti veya hatta sepetindeki öğe sayısı için benzersiz olsun diye eklemiyorsunuz?