레이아웃 XML에서 블록 유형을 변경할 수 있습니까?
방법을 사용하여 템플릿을 변경하는 방법을 알고 setTemplate
있지만 블록 유형을 변경하려고합니다. 이게 가능해?
답변
블록 유형을 변경한다는 것은 블록 클래스를 변경한다는 의미입니다.
… 블록을 덮어 쓸 수 있습니다.
- 나중에 호출되는 레이아웃 핸들을 찾거나
layout.xml
블록이 생성 된 후 (예 :<depends>
inCompany_Module.xml
- 같은 이름으로 다른 유형의 새 블록을 만드십시오.
문제는 블록을 덮어 쓰고 유형을 변경하지 않는다는 것입니다. 즉,이 블록에서 생성과 변경 사이에 수행 된 모든 내용이 손실됩니다.
예를 들어 catalog.navigation
:
<layout version="0.1.0">
<catalog_category_default translate="label">
<reference name="left">
<block type="myModule/navigation" name="catalog.leftnav" after="currency" template="myModule/catalog/navigation/left.phtml"/>
</reference>
</catalog_category_default>
</layout>
답변
레이아웃 파일 afaik에서 변경할 수 없습니다. 그러나 구성 파일에서이를 확장하고 무시할 수 있습니다.
예:
<config>
<global>
<blocks>
<catalog>
<rewrite><product_view>My_Custom_Block_Product_View</product_view></rewrite>
</catalog>
</blocks>
</global>
</config>
원래 블록을 확장해야합니다.
답변
특정 레이아웃에 대해 특정 블록을 업데이트 해야하는 비슷한 문제에 직면했습니다.
내가 끝내고 작동하는 것 (레이아웃 파일에 있음)
<controller_x_y>
<reference name="block_name_reference">
<block type="mymodule/customblock" name="block_name_reference" />
</reference>
</controller_x_y>
도움이 되었기를 바랍니다.