2011-04-08 10 views
6

Bir yerden önce gördüm, xml ifconfig ifadeleri için bir değer belirtin (varsayılan olarak yalnızca boole). Her neyse, yönetici içindeki modülleri devre dışı bırakma aslında çalışmıyor (sadece modül çıkışını devre dışı bırakır).Magento - xml düzenleri, ifconfig için değer belirtin mi?

<action method="setTemplate" ifconfig="advanced/modules_disable_output/Myname_Mymodule"> 
    <template>mytemplate.phtml</template> 
</action> 

Peki bu ters olabilir, şablonun böylece: Ama örneğin, bir modül engelli yalnızca bir şablon ayarlamak için böylece, senin düzen dosyasına bir İfconfig ekleyebilir şudur yalnızca modül etkinken etkin midir? Bu benim üzerinde çalıştığım something (kendinden bağlantı) ile iyi uyum

<action method="setTemplate" ifconfig="advanced/modules_disable_output/Myname_Mymodule" value="0"> 
    <template>mytemplate.phtml</template> 
</action> 

cevap

21

: gibi bir şey.

ifconfig davranışını değiştirmek için bir sınıf yeniden yazmadan, tam olarak ne istediğinizi yapamazsınız. İşte, ifconfig özelliğini uygulayan kod.

Bir ifconfig'in varlığı algılanırsa ve config değeri true değerini döndürürse, eylem yöntemi çağrılmaz. _generateAction'u yeniden yazabilir ve kendi koşulunuzu uygulayabilirsiniz, ancak daha sonra yeniden yazma işleminin standart yükü size düşer.

Daha iyi bir yaklaşım, eylem parametrenizde yardımcı bir yöntem kullanmak olacaktır. Bu

<action method="setTemplate"> 
    <template helper="mymodule/myhelper/switchTemplateIf"/> 
</action> 

gibi bir şey ya şablon veya değişiklikleri tutar o switchTemplateIf yılında özel mantığı uygulamak

Mage::helper('mymodule/myhelper')->switchTemplateIf(); 

bir çağrı sonuçları ile setTemplate arayacak ve gitmek iyi olacak.

+0

-> üst veya - > aşağıda. Böylece üst seçilip seçilmediğini kontrol et, sonra ürün sayfamın en üstünde yer alan ürünlerimi katalog sayfasındaki product_list'in altında göster .. Thanx .. –

+0

Özel mantığımızın gerçek veya yanlış olduğu yerde ifConfig yerine helper metodunu arayabilir miyiz? –

+0

Merhaba Alan, kendi modülümüzün sistem değişkenini kullanarak belirli bir Magento sayfasının şablon düzenini ayarlamak için bu yaklaşımı kullanabilir miyiz? Bunun için yeni bir soru açtım. Burada chekc olabilir eğer memnun olurdu http://stackoverflow.com/questions/11593340/magento-changes-layout-dynamically-via-system-variable – Kamal

8

Modülünüzün system.xml'undan başka hiçbir şey kullanmadan etkin ayarını oluşturabilirsiniz.

<config> 
    <sections> 
     <advanced> 
      <groups> 
       <YOURMODULE> 
        <fields> 
         <enable> 
          <label>YOUR MODULE</label> 
          <frontend_type>select</frontend_type> 
          <source_model>adminhtml/system_config_source_enabledisable</source_model> 
          <show_in_default>1</show_in_default> 
          <show_in_website>1</show_in_website> 
          <show_in_store>1</show_in_store> 
         </enable> 
        </fields> 
       </YOURMODULE> 
      </groups> 
     </advanced> 
    </sections> 
</config> 

Sonra düzeni dosyasında yeni ayarı kullanın:

ben sadece iki olası değeri olan bir alanın, değerini kontrol etmek Layout.xml kontrol etmek istiyorum
<action method="setTemplate" ifconfig="advanced/YOURMODULE/enable"> 
    <template>mytemplate.phtml</template> 
</action> 
+0

Evet, şu anda bunu yapıyorum, bu da işe yarıyor, ama varsayılan modül devre dışı bırakma cihazını kullanmaktan çok hoşlanırdım ve bunu her bir düzende eklemek zorunda kalmamı sağlarım. –

+0

Bu alanın değeri nasıl kontrol edilir .. => ifvalue = "...." ... bir alanın değerini kontrol etmek ve daha sonra ürünümün üstünde veya altında kılavuzumu göstermeye karar vermek istiyorum ... Teşekkürler ... –

+1

@ime, Yerleşim sisteminde şu anda "ifvalue" yok, sadece sıfır olmayan bir değeri kontrol eden bir "ifconfig" var.Bunu bir çift evet/hayır ayarıyla, biri 'ürün listesi' için ve diğeri 'ürün listesinin altında' kullanabilirdiniz. (Bu, kullanıcının yapmak isteyemeyeceğiniz iki noktayı veya her ikisine birden sahip olmasını sağlar.) PHP'nin kendinize yazabilmesinin tek yolu. – clockworkgeek

İlgili konular