Magento şablonunu değiştirmenin doğru yolu / yaklaşımı nedir?


15

Lütfen bana doğru yaklaşımı önerin, kullanıcı düğmeyi tıkladığında (Bu ürüne e-posta gönderin) "Arkadaşa EMAIL" sayfasını açılır pencereye özelleştirmek istiyorum. Şablon ipucunu etkinleştirerek, düğmenin

önyüzü / RWD / default / template / katalog / ürün / görünüm / sharing.phtml

Ve karşılık gelen düzen dosyası catalog.xml(ön uç / rwd / varsayılan / düzende)

Bu yüzden aşağıdaki kod ile local.xmlaynı klasörde oluşturdum catalog.xml(sadece 'Hata Ayıklama' test.phtmlyerine verdiğim gibi sharing.phtml)

<?xml version="1.0"?>
<layout version="0.1.0">
    <default>

        <catalog-product-view>
            <reference name="content">
                <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
                    <block type="catalog/product_view" name="product.info.sharing" as="sharing" template="catalog/product/view/test.phtml"/>
                </block>
            </reference>
        </catalog-product-view>

    </default>
</layout>

Ama hiçbir şey olmuyor, yani varolan dosyaları xmlve phtmldosyaları değiştirmeden temanın varsayılan tasarımını nasıl değiştirebilirim (üzerine yazabilirim) ?

Yanıtlar:


10

local.xmlDosyanızın içine koymanız gereken şey budur .

<?xml version="1.0"?>
<layout version="0.1.0">
    <catalog_product_view>
        <reference name="product.info.sharing">
            <action method="setTemplate">
                <template>catalog/product/view/test.phtml</template>
            </action>
        </reference>
    </catalog_product_view>
</layout>

Yaptığınız hatalar

  • Kullanılan iki düzen güncelleme kolları : defaultve catalog-product-view. Bu yanlış. Yalnızca bir düzen güncelleme tutamacına ihtiyacınız vardır. Burada kullanmanız gereken doğru olancatalog_product_view

  • Yani catalog-product-viewmagento için bilinmemektedir. Uygun isimcatalog_product_view

  • Paylaşım bloğu zaten üzerinden tanımlandığından catalog.xml, şimdi bu bloğa başvurmanız ve ardından eylem ekleyerek şablonu değiştirmeniz gerekir setTemplate. Yukarıdaki komut dosyası bunu yapar.

Umarım fikri anlarsın


Ben local.xml kullandım, hala belirtilen klasörde mevcut bir (i bir test.phtml oluşturdum) gösteren
Dimag Kharab

önbelleğini temizledin mi? her şeyi doğru yaptıysanız, bu işe yarayacaktı.
Rajeev K Tomy

yup önbellekleme benim durumumda devre dışı bırakıldı ve ben de reindexed (sanırım gerekli değildi)
Dimag Kharab

bunu <reference name="content"><block type="core/template" name="test.block" template="catalog/product/view/test.phtml" /></reference>doğrudan düğüm altına ekleyin <catalog_product_view>. test.phtml dosya içeriğinin bir ürün görünümü sayfasının alt kısmında olup olmadığına bakın
Rajeev K Tomy

Şans yok kardeşim
Dimag Kharab

10

Genel bir cevap vermeye çalışacağım.

Şablonlar nasıl değiştirilir?

Temanızda, phtmlvarsayılan tema veya üst temadaki dosyaları geçersiz kılabilirsiniz . Orijinal dosyayı buraya kopyalayın ve app/design/frontend/[package]/[theme]/template/[path/to/phtml]değişikliklerinizi yapın.

Henüz projeye özgü bir özel temanız yoksa, örneğin yeni bir tema satın aldığınız için,

app/design/frontend/[original-package]/[project-name]

Devralınacak [original-package]/[default], her şeyi varsayılandan kopyalamanıza gerek yok, sadece değişiklik yapmanız gereken dosyaları.

Modüle özgü değişiklikler

phtmlDosyayı geçersiz kılmanın bir alternatifi , şablon yolunu değiştirmektir. Bu genellikle XML düzeninde şu şekilde yapılabilir:

<reference name="the-block-name">
    <action method="setTemplate"><name>path/to/new/template.phtml</name></action>
</reference>

Ancak bu, temaya özgü değişiklikler için değil, bir şablonu değiştirmesi gereken modüller tarafından kullanılmak üzere tasarlanmıştır. Yeni şablon base/defaulto zaman içinde olmalıdır .

Local.xml / theme.xml nasıl kullanılır?

local.xmlDosya kullandığınız gerçek tema yani dizinde olmalıdır

app/design/frontend/[package]/[theme]/layout

local.xmlYedek hiyerarşisindeki birden fazla dosya dikkate alınmaz. Bunlardan ilki bulunabilecek:

app/design/frontend/[package]/[theme]/layout/local.xml
app/design/frontend/[package]/default/layout/local.xml
app/design/frontend/base/default/layout/local.xml

(varsayılan hiyerarşi varsayılır ve özel tanımlı hiyerarşi yoktur)

Değişiklikler nasıl yapılır?

Orijinal XML dosyalarındaki tanımları tekrarlamamak için yalnızca local.xml dosyasında değişiklik yapmanız gerekir. Bu, doğrudan dosyalarda değişiklik yapmak için XML dosyalarını varsayılan temadan kopyalamaktan kaçınmak anlamına da gelir. Temanızın layoutdizinini temiz tutun !

Tipik elemanları local.xmlolan <remove>, tamamen mevcut blokları kaldırmak için, <action method="unsetChild">ve <action method="append">başka bir ebeveynden bir blok taşımak için ya da var olan bloklar da başka yöntemler arama davranışını değiştirmek için kullanılır.

Magento 1.9

Magento 1.9'dan başlayarak, en iyi uygulama aslında layout/local.xmlbu değişiklikler için değil ,etc/theme.xml

Kısacası, app / design / frontend / paketiniz / etc / theme.xml dosyasına bir düzen güncellemesi ekleyebilirsiniz. Avantajı, yerleşim güncellemelerinizin yükleme sırası üzerinde kontrol sahibi olmanızdır. Magento 1.9'dan önce local.xml her zaman en son yüklenmiştir ve bundan sonra yerleşim yönergelerinin yürütülmesi imkansızdı.

Artık projeye özgü tema değişiklikleri için local.xml kullanmıyorum. Ben local.xml sadece geriye dönük uyumluluk nedenleriyle (1.9 ve üstü) artık kullanıldığından bir anlamı olmadığı için kullanıldığını düşünüyorum. Local.xml, Magento 2'de de ( https://github.com/magento/magento2/issues/1037 ) elenir .

Kaynak: https://erfanimani.com/dont-use-local-xml/

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.