การเพิ่มบล็อกการนำทางแบบเลเยอร์ในเพจที่กำหนดเอง


9

ใน Magento บล็อก Layered Navigation นั้นทำงานได้ดีในหน้ารายการผลิตภัณฑ์

บล็อกนี้จะถูกคัดลอกไปยังหน้ากำหนดเองได้อย่างไรมีรายการผลิตภัณฑ์ที่กำหนดเองได้อย่างไร

หมายเหตุ: เพียงเพิ่มบล็อกใน XML และการโทรมันgetChildHtml('blockname')ไม่ได้เป็นการหลอกลวง


2
คุณต้องเพิ่มหมวดหมู่เริ่มต้นลงในโค้ดบล็อกการนำทางแบบเลย์เอาต์เนื่องจากการนำทางแบบเลย์เดอร์นั้นสร้างจากผลิตภัณฑ์ของหมวดหมู่ปัจจุบัน
Sander Mangel

+1 สำหรับความช่วยเหลือจะเกิดอะไรขึ้นถ้ามีหลายผลิตภัณฑ์จากหลายหมวดหมู่ (เช่นจัดการผลิตภัณฑ์)
pzirkind

2
ฉันจะทำหมวดหมู่พิเศษสำหรับสิ่งนั้น อาจมีวิธีอื่น ๆ แต่นี่เป็นวิธีที่ง่ายและปรับขนาดได้อย่างแน่นอนที่สุด!
Sander Mangel

1
หากคุณต้องการจริงๆคุณจะต้องสร้างหมวดหมู่ที่กำหนดเอง การนำทางแบบเลเยอร์คาดว่าจะมีหมวดหมู่ที่ใช้งานได้จริง ๆ จะไม่ใช้ ProductCollection แบบง่าย ๆ โดยไม่ต้องใช้คลาสมากเกินไป
Rick Kuipers

คำตอบ:


5

โดยทั่วไปสิ่งที่คุณต้องทำคือextend/overwriteจากMage_Catalog_Block_Product_List (List.php)และเขียนgetProductCollection()วิธีการใหม่:

protected function _getProductCollection()
{
    if (is_null($this->_productCollection)) {
        // Build collection and set it
        $collection = "...";
        $this->setProductCollection($collection);
    }

    return $this->_productCollection;
}

เมื่อเสร็จแล้วฉันได้เขียนทับทั้งMage_Catalog_Model_Layerชั้นเรียนและMage_Catalog_Model_Categoryและนำตัวแปรใหม่มาใช้:

protected $_customProductCollection;

ฉันเขียนทับgetProductCollection()ทั้งสองคลาสแล้วและฉันได้เพิ่มสิ่งนี้ในตอนต้นของวิธีการ:

if(isset($this->_customProductCollection)){
    return $this->_customProductCollection;
}

ฉันยังมีวิธีการที่อนุญาตให้ฉันตั้งค่านี้"customProductCollection"ภายในทั้งสองชั้นเรียนเหล่านี้ เมื่อตั้งค่าเรียบร้อยแล้วข้อมูลส่วนที่เหลือของการนำทาง / หมวดหมู่ที่เป็นชั้นจะยึดตามคอลเลกชันนี้

ตรวจสอบคำตอบของคำถาม + เริ่มต้นที่นี่

โชคดี ;)


อะไรคือวิธีการตั้งค่าการเก็บสะสมแบบกำหนดเองและคุณเรียกมันจากที่ใด
easymoden00b
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.