วีโอไอพี 2: การเพิ่มบล็อกแบบคงที่ไปยังส่วนเฉพาะของหน้าด้วยไฟล์ xml เค้าโครงโมดูลที่กำหนดเอง


16

ใน magento 1.x เป็นไปได้ที่จะเพิ่มบล็อกแบบคงที่โดยใช้ไฟล์รูปแบบ xml

<reference name="root">
        <block type="cms/block" name="name">
            <action method="setBlockId"><block_id>static-block-id</block_id></action>
        </block>
</reference>

แต่ในวีโอไอพี 2 เราจะประสบความสำเร็จได้อย่างไร

คำตอบ:


25

ในที่สุดฉันก็ได้ทางออก คุณสามารถเรียกบล็อกคงที่โดยใช้วิธีดังต่อไปนี้

<referenceContainer name="footer">
    <block class="Magento\Store\Block\Switcher" name="store_switcher" as="store_switcher" after="footer_links" template="switch/stores.phtml"/>

     <block class="Magento\Cms\Block\Block" name="test">
        <arguments>
            <argument name="block_id" xsi:type="string">promo</argument>
        </arguments>
    </block>
</referenceContainer>

คุณทราบชื่ออ้างอิงได้อย่างไร
Stevie G

@StevieG ทั้งค้นหาหรืออ่านการใช้งาน XML เริ่มต้นเพื่อให้คุณรู้ว่าทุกอย่างถูกสร้างขึ้น (มีประโยชน์มากที่จะทำในระยะยาว)
Melvyn

8

สามารถทำได้อย่างง่ายดายจากแผงควบคุมโดยทำตามขั้นตอนด้านล่าง

  1. ไปที่เนื้อหา -> วิดเจ็ต
  2. เพิ่มวิดเจ็ตใหม่
  3. เลือกประเภทเป็น CMS Static Block
  4. เลือกแพ็คเกจการออกแบบ / ธีมและดำเนินการต่อ
  5. ชุดWidget Title, StoreและSort orderในStorefront propertiesแท็บ
  6. เลือกบล็อกคงที่จากในWidget optionsแท็บ
  7. บันทึกวิดเจ็ต
  8. คลิกที่Add Layout Updateปุ่ม
  9. เลือกตัวเลือกจากDisplay onเมนูดร็อปดาวน์เช่น: Specific pageเพื่อแสดงบล็อกบน specifi

  10. เลือกหน้าจากPageดรอปดาวน์

  11. เลือกคอนเทนเนอร์จากContainerดรอปดาวน์
  12. บันทึกวิดเจ็ต

มีประโยชน์สำหรับหน้า CMS เท่านั้น เราสามารถใช้มันในโมดูล xml ที่กำหนดเองของเราได้ด้วยหรือไม่?
Rajput น่ายกย่อง

ฉันได้ให้ตัวอย่างหน้าของ cms เท่านั้นคุณสามารถใช้มันสำหรับโมดูลหรือเพจที่เป็นไปได้ทั้งหมด คุณสามารถรับแนวคิดได้โดยดูรายการตัวเลือกในจอแสดงผลแบบเลื่อนลง
Taral Patoliya

มันยอดเยี่ยมสะอาดและเรียบง่าย ขอขอบคุณ.
dawhoo

5

หากคุณต้องการเรียกบล็อกคงที่ในหน้า 2 คอลัมน์ซ้ายคุณสามารถทำได้โดยใช้

ที่นี่ด้านล่างคุณสามารถเปลี่ยนได้quickblockด้วยตัวระบุบล็อกแบบคงที่ของคุณ

<referenceContainer name="sidebar.main">
            <block class="Magento\Cms\Block\Block" name="quick-block">
                <arguments>
                    <argument name="block_id" xsi:type="string">quickblock</argument>
                </arguments>
            </block>
</referenceContainer>

Above Block ทำงานได้ดีสำหรับ 2columns left ที่มี sidebar


สวัสดีถ้าเราต้องการที่จะเรียกบล็อกแบบคงที่เท่านั้นสำหรับรูปแบบหน้าหมวดหมู่แล้ว? ฉันเรียกบล็อกคงที่ใน xml ด้วย sidebar.additional แต่มันไม่ทำงาน อะไรคือเหตุผล?
แจ็ค

@Rakesh, <? php echo $ this-> getLayout () -> createBlock ('Magento \ Cms \ Block \ Block') -> setBlockId ('identiefier_id') -> toHtml (); ?> ฉันใช้ใน success.phtml แล้วมันไม่ทำงาน
jafar pinjar

2

ในรหัสต่อไปนี้เปลี่ยน "block_identifier" จากบล็อก CMS ที่สร้างขึ้นบนแผงควบคุม magento และเพิ่มลงใน layout.xml มันได้ผล.

<referenceContainer name="footer">
       <block class="Magento\Cms\Block\Block" name="block_identifier">
            <arguments>
                <argument name="block_id" xsi:type="string">block_identifier</argument>
            </arguments>
        </block>
    </referenceContainer>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.