Magento2'deki modül üzerinden bir şablonun üzerine nasıl yazılır


9

Bir modül oluşturuyorum ve şablonun üzerine yazmak istiyorum app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit/options.phtml.

Bu bir modülde mümkün mü (tema değil)

Maalesef https://github.com/magento/magento2/blob/develop/app/code/Magento/Catalog/Block adresinde sabit olarak kodlandığı için modül adını mizanpaj XML yoluyla değiştirmek çok kolay görünmüyor. /Adminhtml/Product/Edit/Tab/Options.php#L21


Lütfen cevap için bu bağlantıya bakın magento.stackexchange.com/questions/76434/…
Divya

Lütfen cevap için bu bağlantıya bakın magento.stackexchange.com/questions/76434/…
Divya

Yanıtlar:


10

Modül dosyanızın düzen klasörünü ekleyin [Satıcı] / [ModülAdı] /view/adminhtml/layout/catalog_product_options.xml

<?xml version="1.0"?>
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">
    <referenceBlock name="admin.product.options">
        <arguments>
            <argument name="template" xsd:type="string">[Vendor]/[ModuleName]::product_options.phtml</argument>
        </arguments>
    </referenceBlock>
</layout>

Ayrıca katalogdan sonra düzenleri yüklemek için bu satırı xml modülüne eklemeniz gerekir

<sequence>
        <module name="Magento_Catalog"/>
</sequence>

İsmi admin.product.optionsnereden aldın ?
Alex

\ Magento \ Catalogue \ Block \ Adminhtml \ Product \ Edit \ Tab \ Options öğesini düzen dosyalarına göre arayın ve Magento / Catalogue / view / adminhtml / layout / catalog_product_options.xml adresindeki bildirimi bulun ve 9
46'da KAndy

1
Olmamalı mı Vendor_ModuleName::product_options.phtml?
Giel Berkers

Evet, teşekkür ederim
KAndy

2
Bu çözüm, yalnızca özgün şablon Block.php dosyasında ayarlanmışsa çalışır. Orijinal şablon layout.xml dosyasında ayarlanırsa, bu çözüm çalışmaz. Daha iyi bir yaklaşım her zaman <action method="setTemplate">yerine kullanmaktır <arguments>. Bu çözüm her durumda işe yarar.
Jalogut

3
  1. Modülünüzde ilgili düzen dosyasını oluşturun:

[Satıcı] / [modül ismi] /view/adminhtml/layout/catalog_product_options.xml

  1. Özel şablon yapılandırmanızı ayarlayın
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">
    <referenceBlock name="admin.product.options">
        <action method="setTemplate">
            <argument name="template" xsi:type="string">[Vendor]_[ModuleName]::product_options.phtml</argument>
        </action>
    </referenceBlock>
</layout>

NOT: <action method="setTemplate">yerine kullanmak çok önemlidir <arguments>. <arguments>yalnızca blokta xml bildiriminde belirtilen başka bir şablon yoksa çalışır. Başka bir durumda, <action method="setTemplate">mevcut şablonu geçersiz kılmanız gerekir . Kullanmak daha iyidir <action method="setTemplate">çünkü her zaman çalışır.


0

Evet, özel modülünüzün uygulama / kodundaki şablon dosyalarının üzerine yazabilirsiniz. Ancak, Magento'nun miras konseptinde, uygulama / tasarımdaki dosyaların (şablonlar, düzenler, statik dosyalar) uygulama / kodda aynı şekilde yazıldığını unutmayın. Çocuk temasının üst temanın üzerine yazması gibi.

Bu nedenle, özel modülünüz için özel bir tema oluşturmanın ve uygulama / tasarımda tüm phtml, xml, css, js, yazı tipi ve görüntü dosyalarınızı eklemenin en iyi yol olduğunu düşünüyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.