레이아웃 XML에서 블록 유형을 변경할 수 있습니까? 유형을 변경할 수 있습니까? 방법을

레이아웃 XML에서 블록 유형을 변경할 수 있습니까?

방법을 사용하여 템플릿을 변경하는 방법을 알고 setTemplate있지만 블록 유형을 변경하려고합니다. 이게 가능해?



답변

블록 유형을 변경한다는 것은 블록 클래스를 변경한다는 의미입니다.

… 블록을 덮어 쓸 수 있습니다.

  1. 나중에 호출되는 레이아웃 핸들을 찾거나 layout.xml블록이 생성 된 후 (예 : <depends>inCompany_Module.xml
  2. 같은 이름으로 다른 유형의 새 블록을 만드십시오.

문제는 블록을 덮어 쓰고 유형을 변경하지 않는다는 것입니다. 즉,이 블록에서 생성과 변경 사이에 수행 된 모든 내용이 손실됩니다.

예를 들어 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>

도움이 되었기를 바랍니다.