ฉันใช้การเจาะรูส่วนหัวในวีโอไอพีและแม้ว่าฉันจะทำให้มันทำงานบนพื้นฐานของลูกค้าต่อฉันต้องการความสามารถในการใช้ระดับนี้ลึกลงไปหนึ่งระดับโดยการทำให้มันทำงานกับสินค้าในตะกร้าสินค้าต่าง ๆ ด้วย
นี่คือรหัสของฉัน
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();
}
}
ความเข้าใจของฉันจากสิ่งที่ฉันได้รับการอ่านจากการทำเกลียวในวีโอไอพีคือแอป Mage ไม่เริ่มต้นเมื่อแคช FPC ให้บริการตามคำขอดังนั้นโดยทั่วไปวิธีการเพิ่มแอตทริบิวต์ตัวยึดจึงไม่สามารถทำงานได้เนื่องจาก
Mage::helper( 'checkout/cart' )->getCart()->getItemsCount();
จะไม่ทำงานใช่ไหม
และถึงแม้ว่ามันจะเป็นไปได้อย่างไร แต่มันก็ไม่ได้ดูเหมือนว่าจะทำงานได้ทั้งหมดเช่นฉันdie()
โทรเข้าที่นั่น แต่ไม่มีอะไรเกิดขึ้น
แล้วฉันจะพลาดอะไร และฉันจะเรียกรายการรถเข็นนับได้อย่างไรเพื่อที่จะสามารถใช้สร้างรหัสแคชได้
ความคืบหน้า: ฉันพบ
Enterprise_PageCache_Model_Cookie::COOKIE_CART
แต่สิ่งนี้จะเปลี่ยนแปลงเพียงครั้งเดียวเมื่อมีการอัพเดทรถเข็น หลังจากนั้นก็ยังคงเหมือนเดิม นี่มันแปลก ๆ นี่ให้ความรู้สึกเหมือนเป็นทางออก แต่พฤติกรรมของมันบอกเป็นอย่างอื่น
ฉันไม่พบสินค้าในรถเข็นที่ถูกนับในเซสชันเช่นกัน ดังนั้นวิธีเดียวที่ฉันเห็นในตอนนี้คือการบันทึกปริมาณรถเข็นในเซสชันเมื่อใดก็ตามที่มีการอัปเดตจากนั้นจึงใช้สิ่ง_getIdentifier()
ต่อไปนี้
ฉันพบว่าผู้สังเกตการณ์ไม่สอดคล้องกับรถเข็น สำหรับการอัปเดตกิจกรรมจะถูกส่ง แต่สำหรับการลบก็ไม่ได้ ดังนั้นฉันคิดว่าฉันสามารถเพิ่มผู้สังเกตการณ์ของฉันเพื่อปรับปรุงราคาของคำพูดได้ถ้ามันสอดคล้องกันในการมีผู้สังเกตการณ์?
นอกจากนี้ฉันได้อ่าน การเปลี่ยนแปลงการแคชแบบเต็มหน้าบนการอ้างอิงรถเข็น (อ้าง)แต่มันจัดการใช้
Enterprise_PageCache_Model_Cookie::COOKIE_CART
ซึ่งใช้งานไม่ได้ในกรณีของฉันแม้ว่าฉันจะคิดว่าปัญหาอยู่ข้างใน อะไร / อย่างไร ฉันไม่แน่ใจ.
นอกจากนี้ยังมีรุ่นปัจจุบันของ EE
Model/Container
เราได้ทำงานไม่ได้มีสินค้าทุกประเภทภายใต้โฟลเดอร์ ฉันใช้EE 1.10.1.1
ข้อเสนอแนะใด ๆ
_getIdentifier
เพื่อให้บล็อกนั้นไม่ซ้ำกับรถเข็นของลูกค้าหรือแม้แต่จำนวนรายการในรถเข็นของพวกเขา