Magento의 레이아웃 XML에서 (관리자 패널의 구성에 따라) 조건부로 블록을 추가하는 방법은 무엇입니까?
동작에서 설정이 참인지 확인할 수 있습니다. 아래 예 sample/config/show_toplinks
에서 (시스템-> 구성에서) 관리자 패널의 구성이 true이면 템플릿 파일 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>
웹 어딘가 에서이 해결 방법을 찾았습니다. 빈 템플릿을 다음과 같이 Top Links의 기본 템플릿으로 설정할 수 있습니다.
<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이라고 말하면
성능에 영향을 줍 니까? 일부 블록 만 실제로 표시되지만 (시스템-> 구성의 사용자 설정에 따라 다름) 조건부로 블록을 추가하기 전에 모든 블록을 추가해야합니다 <reference name="footer">...</reference>
.
Magento는 이와 같이 추가 된 모든 블록을 즉시 처리합니까?
<block type="core/template" name="my_block" template="my/block.phtml" />
또는 블록이 템플릿에 최종적으로 표시되어야하는 경우에만 처리됩니까? Magento는 일부 블록 만 표시해야한다는 사실에도 불구하고 내 50 개 블록을 모두 처리해야합니까?