Özel bir modülden çekirdek şablon dosyalarının üzerine nasıl yazılır?


10

İki dosyanın üzerine yazmak istiyorum. Yani view.phtmlve print.phtmlmüşteri siparişleri.
(yol: app/design/frontend/base/default/template/sales/order/)

app/design/frontend/base/default/template/<My Module Name>/sales/order/Çekirdek view.phtmlve print.phtmldosyaların üzerine yazılmaması için bir yol oluşturmak istediğim bir modül oluşturuyorum .

Lütfen bu görevi nasıl başaracağımı bana yönlendirin.

Yanıtlar:


13

Bunu, modülünüzün içindeki bir düzen XML dosyasıyla yapabilirsiniz. config.xmlMagento'nun modülünüzün düzen XML'sini yüklemesine izin vermek için modülünüzde böyle bir bölümün olması gerekir (yol:) app/design/frontend/base/default/layout/mymodulename.xml:

<config>
    [...]
    <frontend>
        [...]
        <layout>
            <updates>
                <mymodulename_layout module="MyModuleName">
                    <file>mymodulename.xml</file>
                </mymodulename_layout>
            </updates>
        </layout>
    </frontend>

Bu mizanpaj XML dosyasında belirli bloklara başvurabilir ve şablonlarını değiştirebilirsiniz.

<layout>
    <sales_order_view>
        <reference name="sales.order.view">
            <action method="setTemplate">
                <template>mymodulename/sales/order/view.phtml</template>
            </action>
        </reference>
    </sales_order_view>
    <sales_order_print>
        <reference name="sales.order.print">
            <action method="setTemplate">
                <template>mymodulename/sales/order/print.phtml</template>
            </action>
        </reference>
    </sales_order_print>
</layout>

@ 7ochem, magento2 de nasıl elde edilir?
prasad maganti

Burada bir yorum koymak için çok geniş ve OP sorduğu şey bu değil gibi yeni bir soru olarak sormak gerekir
7ochem

3

Modül Adımız 'CustomSales' ve Paket Adımız "Exercise" diyelim.

Adım 1: app / etc / modules / Exercise_CustomSales.xml içine bir modül yapılandırma dosyası oluşturun

<config>
<modules>
    <Exercise_CustomSales>
        <active>true</active>
        <codePool>local</codePool>
    </Exercise_CustomSales>
</modules>

Adım 2: app / code / local / Exercise / CustomSales / etc / config.xml altında bir yapılandırma dosyası oluşturun

<config>
<modules>
    <Exercise_CustomSales>
        <version>1.7.0.2</version>
    </Exercise_CustomSales>
</modules>
<global>
    <blocks>
        <customsales>
            <class>Exercise_CustomSales_Block</class>
        </customsales>
        <sales>
            <rewrite>
                <order_view>Exercise_CustomSales_Block_Sales_Order_View</order_view>
            </rewrite>
        </sales>
    </blocks>
</global>

Adım 3: Gerçek view.phtml dosyasının, app / code / local / Exercise / CustomSales / Block / Sales / Order / View.php dosyasının üzerine yazılan bir php dosyası oluşturun

class Exercise_CustomSales_Block_Sales_Order_View, Mage_Sales_Block_Order_View öğesini genişletir
{
    korumalı işlev _construct ()
    {
        üst :: _ yapı ();
        $ This-> setTemplate ( 'customsales / satış / sipariş / view.phtml');
    }
}

Adım 4: Düzen klasörünün içinde bir local.xml dosyası oluşturmalısınız (Olası yol: app / design / frontend / package / theme / layout). Bu print.phtml içindir.

ör. (app / design / frontend / rwd / default / layout / local.xml)

<layout>
<sales_order_print>
    <reference name="sales.order.print">
        <action method="setTemplate">
            <template>customsales/sales/order/print.phtml</template>
        </action>
    </reference>
</sales_order_print>

View.phtml ve print.phtml dosyasını "app / design / frontend / package / theme / template / customsales / sales / order" içine taşıyın.

Macenta önbelleği temizle.


Tüm bloğu yeniden yazmaya gerek yoktur. Cevabımda get'in yapıcısı Mage_Sales_Block_Order_Viewönce çağırılır ve şablonu ayarlar, sonra setTemplateget örneğimdeki düzen XML tarafından başlatılır ve özel şablonu ayarlar. Yeniden yazma kullanmayan çözümlere gitmek istiyorum çünkü potansiyel olarak çatışmalara neden olabilirler.
7ochem

7ochem haklı. Şablonun Blokta ayarlanmasına gerek yoktur. 7ochem'in çözümü iyi ve benim için çalıştı.
Rajan Faldu

Bu size bağlı. Bazı php yönteminin üzerine yazar veya eklerseniz, bloğun üzerine yazmanız gerekir, aksi takdirde şablonu module.xml veya local.xml aracılığıyla değiştirirsiniz. Benim çözümüm herhangi bir magento sürümünü etkilemiyor sanırım.
Sohel Rana
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.