ลบแถบเครื่องมือจากรายการผลิตภัณฑ์ผ่าน local.xml


13

ฉันคุ้นเคยกับการใช้ local.xml สำหรับการอัปเดตโครงร่างของฉันอย่างไรก็ตามฉันไม่สามารถลบแถบเครื่องมือออกจากบล็อกรายการผลิตภัณฑ์โดยใช้วิธีการลบหรือ unsetChild

ทุกคนสามารถพูดได้ว่าถ้ามันเป็นไปไม่ได้จริงหรือฉันทำอะไรผิดพลาด?

ฉันเหนื่อย:

<action method="unsetChild">  
    <alias>toolbar</alias>
</action>

และ

<action method="unsetChild">  
    <alias>product_list_toolbar</alias>
</action>

และ<remove name="" />วิธีการด้วย แต่ไม่มีอะไรทำงาน

คำตอบ:


11

และคุณจะไม่สามารถลบออกได้โดยไม่ต้องลบล้างอะไรสักอย่าง นี่เป็นวิธีที่getToolbarBlock()ดูเหมือนว่า:

public function getToolbarBlock()
{
    if ($blockName = $this->getToolbarBlockName()) {
        if ($block = $this->getLayout()->getBlock($blockName)) {
            return $block;
        }
    }
    $block = $this->getLayout()->createBlock($this->_defaultToolbarBlock, microtime());
    return $block;
} 

ซึ่งหมายความว่าหากบล็อกที่มีชื่อ (ค่าที่ส่งคืนgetToolbarBlockName) มีอยู่ในโครงร่างบล็อกนั้นจะถูกส่งคืน มิฉะนั้นบล็อกใหม่จะถูกสร้างขึ้นด้วยประเภทcatalog/product_list_toolbarและจะถูกส่งกลับโดยวิธีการ

[แก้ไข] ฉันเพิ่งมีความคิดที่บ้า ทำไมไม่เปลี่ยนประเภทบล็อกของแถบเครื่องมือ ด้วยวิธีนี้มันจะไม่ถูกแสดงผลเป็นแถบเครื่องมือ ฉันไม่ได้ลอง แต่ฉันคิดว่ามันคุ้มค่า
สิ่งที่ต้องการ:

<reference name="product_list">
    <block type="core/template" name="product_list_toolbar" />
</reference>

ฉันหมายถึงการเพิ่มบล็อกที่มีชื่อเดียวกัน แต่เป็นประเภทอื่น ถ้ามันใช้งานไม่ได้โปรดอย่าลงคะแนนเลย มันเป็นเพียงความคิด :)


1
รหัสของมันเช่นนี้ทำให้ฉันรำคาญกับ Magento จริงๆ ดังนั้นตอนนี้ฉันต้องไปแทนที่คลาสหรือแม่แบบที่ XML เลย์เอาต์ที่ดีพอเพียง
Marty Wallace

ฉันได้อัปเดตคำตอบด้วยความคิดที่บ้าพอที่จะทำงาน
Marius

@MartyWallace - อย่างน้อยก็มี XML layout ในตอนแรก ฉันคิดว่า XML ของโครงร่างอยู่ในหมวดหมู่ "ให้เมาส์เป็นคุกกี้" เมื่อมีคนรู้วิธีใช้งาน
benmarks

1
ประเภทที่แตกต่างกันอาจทำให้เกิดปัญหาในขณะที่เราต้องการฟังก์ชั่น setCollection เพื่อตั้งเพจ
อเล็กซ์

1
น่าผิดหวังจริงๆแฮ็กที่ล่วงล้ำแม้แต่น้อยจะซ่อนโดยใช้ jQuery กับ jQuery (เอกสาร). ready (function () {jQuery ('. limiter'). hide ();});
Danny Z

8

ในlocal.xmlไฟล์ของคุณเพิ่มต่อไปนี้:

<catalog_category_default>
    <!-- Remove Toolbar by setting a blank template -->
    <reference name="product_list_toolbar">
        <action method="setTemplate"><template /></action>
    </reference>
</catalog_category_default>

สำหรับการอัพเดตเลย์เอาต์ที่กำหนดเองในหน้าหมวดหมู่นี่เป็นคำตอบที่ดีที่สุด
โจเซฟที่ SwiftOtter

2

ดูเหมือนว่าคุณจะไม่สามารถลบสิ่งนี้หรือยกเลิกการตั้งค่านี้ผ่านทาง XML เนื่องจากวิธีการแปลก ๆ ที่ devs สร้างขึ้น อย่างไรก็ตามคุณสามารถสร้างเทมเพลตเปล่าและชี้แถบเครื่องมือไปที่เทมเพลตเปล่านี้แทน

<catalog_category_default>
    <reference name="product_list_toolbar">
        <action method="setTemplate">
            <template>theme/package/blank.phtml</template>
        </action>
    </reference>
</catalog_category_default>
<catalog_category_layered>
    <reference name="product_list_toolbar">
        <action method="setTemplate">
            <template>theme/package/blank.phtml</template>
        </action>
    </reference>
</catalog_category_layered>
<catalogsearch_result_index>
    <reference name="product_list_toolbar">
        <action method="setTemplate">
            <template>theme/package/blank.phtml</template>
        </action>
    </reference>
</catalogsearch_result_index>

ซึ่งจะลบออกจากหมวดหมู่ปกติหมวดหมู่ที่ยึดและหน้าค้นหา

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