Перезапись шаблонов с помощью пользовательского модуля в Magento 2

Я пытаюсь перезаписать шаблон/vendor/magento/module-grouped-product/view/frontend/layout/catalog_product_view_type_grouped.xml, определенный в пользовательском модуле. Файл имеет блок с именемproduct.info.grouped, определенным так:

<block class="MagentoGroupedProductBlockProductViewTypeGrouped" name="product.info.grouped" before="product.info.addtocart" template="product/view/type/grouped.phtml"/>

Поэтому я создал файл /app/code/FortyThree/GroupedConfigurableProduct/view/frontend/layout/catalog_product_view_type_grouped.xmlи в нем

<layout  xsi_noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">
  <referenceBlock name="product.info.grouped">
    <action method="setTemplate">
      <argument name="template" xsi_type="string">FortyThree_GroupedConfigurableProduct::product/view/type/grouped.phtml</argument>
    </action>
  </referenceBlock>
</layout>

и создал соответствующий .phtml-файл, но он не перезаписывает исходный файл шаблона. Есть ли что-то еще, что мне нужно сделать, чтобы получить перезапись для регистрации? Я пробовал setup:upgradeи промывка кэшированного ничего, кажется, не работает. У меня также есть Magento_GroupedProductнабор в разделе последовательности mymodule.xml, чтобы убедиться, что его загрузка после.

It really doesn’t seem like my catalog_product_view_type_grouped.xmlis being read at all since nothing I do in there seems to do matter.

1 ответ

  1. У вас не очень хороший файл макета.

    Это должно сделать трюк :

    <page  xsi_noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
        <body>
            <referenceBlock name="product.info.grouped">
                <action method="setTemplate">
                    <argument name="template" xsi_type="string">FortyThree_GroupedConfigurableProduct::product/view/type/grouped.phtml</argument>
                </action>
            </referenceBlock>
        </body>
    </page>
    

    Также не забудьте добавить в модуль GroupedProduct зависимость.

    Есть несколько способов проверить, правильно ли вы ссылаетесь на блок. Вы можете просто использовать remove, чтобы увидеть, если это работает, чтобы подтвердить, что у вас есть правильный блок.