วิธีเพิ่มบล็อกแบบมีเงื่อนไข (ขึ้นอยู่กับการกำหนดค่าในแผงการดูแลระบบ) ใน XML เลย์เอาต์ของ Magento?
เราสามารถตรวจสอบว่าการตั้งค่าเป็นจริงกับการกระทำ ในตัวอย่างด้านล่างหากการsample/config/show_toplinks
กำหนดค่าจากแผงควบคุม (ในระบบ -> การกำหนดค่า) เป็นจริงไฟล์แม่แบบlinks.phtml
จะถูกใช้เพื่อแสดงผลลิงก์ยอดนิยม หากsample/config/show_toplinks
เป็นเท็จจะมีการใช้แม่แบบเริ่มต้น
<reference name="top.links">
<action method="setTemplate" ifconfig="sample/config/show_toplinks">
<template>page/template/links.phtml</template>
</action>
</reference>
ฉันพบวิธีแก้ปัญหานี้ที่ใดที่หนึ่งในเว็บ เราสามารถตั้งค่าเทมเพลตเปล่าเป็นเทมเพลตเริ่มต้นสำหรับลิงค์ยอดนิยมเช่นนี้:
<reference name="top.links">
<action method="setTemplate" ifconfig="sample/config/show_toplinks">
<template>page/template/links.phtml</template>
</action>
<!-- OR set completely empty template -->
<action method="setTemplate">
<template>page/template/empty_template_for_links.phtml</template>
</action>
</reference>
ในกรณีนี้ถ้าsample/config/show_toplinks
เป็นจริงเทมเพลตlinks.phtml
จะถูกใช้และลิงก์ยอดนิยมจะปรากฏขึ้น แต่ถ้าsample/config/show_toplinks
เป็นเท็จแล้วempty_template_for_links.phtml
แม่แบบจะถูกใช้และแม่แบบที่จะสมบูรณ์ว่างจึงไม่กลับมาใช้ HTML และลิงก์ยอดนิยมจะมองไม่เห็น
- มีวิธีอื่นที่จะแสดงหรือซ่อนบล็อคตามเงื่อนไขโดยขึ้นอยู่กับการกำหนดค่าในแผงควบคุมหรือไม่
- วิธีแก้ปัญหานี้ปลอดภัยหรือไม่
- สิ่งนี้สามารถทำให้เกิดข้อผิดพลาดที่ไม่คาดคิดได้หรือไม่?
แก้ไข:
จากคำตอบทั้งหมดฉันคิดว่าทางออกของ Rick Kuipers ดูจะสะดวกที่สุดสำหรับกรณีของฉัน แต่ฉันมีคำถามอื่นที่เกี่ยวข้อง:
<block type="core/template" name="my_block" template="my/block.phtml" />
<!-- ...add more blocks here -->
<reference name="footer">
<action method="append" ifconfig="sample/config/show_toplinks">
<block>my_block</block>
</action>
<!-- ...append more blocks here -->
</reference>
หากฉันมีหลายบล็อกที่จะเพิ่มเช่นนี้ (ใช้append
วิธีการและifconfig
) สมมติว่า 50
มันมีผลต่อประสิทธิภาพหรือไม่ เพียงบางส่วนของบล็อกที่จะแสดงจริงๆ (ที่ขึ้นอยู่กับการตั้งค่าของผู้ใช้ในระบบ -> Config) <reference name="footer">...</reference>
แต่ฉันจำเป็นต้องเพิ่มบล็อกทุกคนก่อนที่ผมจะมีเงื่อนไขผนวกไว้ภายใน
Magento ประมวลผลบล็อกทั้งหมดที่เพิ่มเข้ามาเช่นนี้ทันทีหรือไม่?
<block type="core/template" name="my_block" template="my/block.phtml" />
หรือบล็อกได้รับการประมวลผลก็ต่อเมื่อต้องแสดงในเทมเพลตในที่สุด ดังนั้นวีโอไอพีจะต้องดำเนินการบล็อกทั้งหมด 50 บล็อกของฉันแม้ว่าจะต้องแสดงบล็อกเหล่านั้นเพียงบางส่วนเท่านั้น