XML düzeninde blok türünü değiştirmek mümkün mü?


13

XML düzeninde bir blok türünü değiştirmek mümkün müdür?

setTemplateYöntemini kullanarak şablon değiştirmek nasıl biliyorum , ama bir blok türünü değiştirmeye çalışıyorum. Mümkün mü?


lütfen neyi değiştirmek zorunda olduğunuzu ayrıntılı olarak açıklayın
Keyul Shah

Yanıtlar:


7

Blok türünü değiştirmek, blok sınıfını değiştirmek anlamına gelir, yani hayır, ama ...

... sadece bloğun üzerine yazabilirsiniz:

  1. Daha sonra çağrılan bir düzen tutamağı bulun VEYA layout.xml, blok oluşturulduktan sonra işlendiğinizden emin olun , örn <depends>.Company_Module.xml
  2. Sadece aynı ada sahip başka türde yeni bir blok oluşturun

Sorun, bloğun üzerine yazması ve türü değiştirmemesidir. Bu, yaratılış ile sizin değişiminiz arasındaki bu blokta yapılan her şeyin kaybolduğu anlamına gelir.

Örneğin 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>

1
Değiştirmek istediğiniz blok sınıfını "devralan" yeni bir blok sınıfı da oluşturabilirsiniz. Blok sınıfını kendinizle değiştirmek için özel uzantınızın config.xml dosyasına bir giriş eklemeniz gerekir. Bloğun işlevselliğini genişletmeyi veya değiştirmeyi planlıyorsanız bu anlamlı olur.
Biagio Arobba

3

Bunu afaik düzen dosyalarında değiştiremezsiniz. Ancak, bunları yapılandırma dosyalarınızda genişletebilir ve geçersiz kılabilirsiniz.

Misal:

<config>
    <global>
        <blocks>
            <catalog>
                <rewrite><product_view>My_Custom_Block_Product_View</product_view></rewrite>
            </catalog>
        </blocks>
    </global>
</config>

Orijinal bloğu uzatmayı unutmayın.


1

Belirli bir düzen için belirli bir bloğu güncellemem gereken benzer bir sorunla karşı karşıya kaldım.

Sonunda ne yapıyorum ve işe yarıyor gibi görünüyor (düzen dosyasında)

<controller_x_y>
    <reference name="block_name_reference">
        <block type="mymodule/customblock" name="block_name_reference" />
    </reference>
</controller_x_y>

Bu yardımcı olur umarım.

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.