Làm cách nào để thêm một cách có điều kiện một khối (tùy thuộc vào cấu hình trong bảng quản trị) trong XML bố cục của Magento?
Chúng tôi có thể kiểm tra nếu cấu hình là đúng trên hành động. Trong ví dụ bên dưới, nếu sample/config/show_toplinks
cấu hình từ bảng quản trị (trong Hệ thống-> Cấu hình) là đúng , thì tệp mẫu links.phtml
sẽ được sử dụng để hiển thị Liên kết hàng đầu. Nếu sample/config/show_toplinks
là sai , thì mẫu mặc định sẽ được sử dụng.
<reference name="top.links">
<action method="setTemplate" ifconfig="sample/config/show_toplinks">
<template>page/template/links.phtml</template>
</action>
</reference>
Tôi tìm thấy cách giải quyết này ở đâu đó trên web. Chúng tôi có thể đặt mẫu trống làm mẫu mặc định cho Liên kết hàng đầu, như thế này:
<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>
Trong trường hợp này, nếu sample/config/show_toplinks
là đúng , thì mẫu links.phtml
sẽ được sử dụng và Liên kết hàng đầu sẽ được hiển thị. nhưng nếu sample/config/show_toplinks
là sai , thì empty_template_for_links.phtml
mẫu sẽ được sử dụng và mẫu đó hoàn toàn trống, do đó nó không trả về bất kỳ HTML nào và các Liên kết hàng đầu sẽ không hiển thị.
- Có cách nào khác để hiển thị có điều kiện hoặc ẩn các khối tùy thuộc vào cấu hình trong bảng quản trị không?
- Cách giải quyết này có an toàn không?
- Điều này có thể gây ra bất kỳ lỗi không mong muốn?
CHỈNH SỬA:
Dựa trên tất cả các câu trả lời tôi nghĩ rằng giải pháp của Rick Kuipers có vẻ thuận tiện nhất cho trường hợp của tôi. Nhưng tôi có một câu hỏi liên quan khác:
<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>
Nếu tôi có nhiều khối để thêm như thế này (sử dụng append
phương thức và ifconfig
), giả sử 50,
nó có ảnh hưởng đến hiệu suất không? Chỉ một số khối sẽ thực sự được hiển thị (phụ thuộc vào cài đặt của người dùng trong Hệ thống -> Cấu hình), nhưng tôi cần thêm tất cả các khối đó trước khi tôi có điều kiện nối chúng vào bên trong <reference name="footer">...</reference>
.
Magento có ngay lập tức xử lý tất cả các khối được thêm vào như thế này không?
<block type="core/template" name="my_block" template="my/block.phtml" />
Hoặc các khối chỉ được xử lý nếu cuối cùng chúng phải được hiển thị trong mẫu? Vì vậy, Magento sẽ phải xử lý tất cả 50 khối của tôi mặc dù thực tế là chỉ một số trong những khối đó cần được hiển thị?