2011-05-26 19 views
8

Mevcut Prestashop modülünü kopyalayıp yeni bir tane oluşturmadan değiştirmek istiyorum. Prestashop'ta .tpl dosyalarını geçersiz kılmanın mümkün olduğunu biliyorum, ancak php sınıflarıyla aynı şeyi yapmak mümkün mü? Mesela blok çıtayı değiştirmek istiyorum, böylece üstüne takılabilir. Orjinal versiyonun o kancası olmadığı için install() işlevini değiştirmem gerekiyor! Özgün kaynağı değiştiremiyorum (kötü bir fikir olmaz ...) dosya blockcart modülünü devralarak install() işlevini geçersiz kılmam gerekiyor. Bunu yapmak mümkün mü ve nerede bulabilirim?Prestashop - Mevcut Prestashop Modülünde Geçersiz Kılma İşlevi

cevap

11

Modül çıktısını tpl dosyalarındaki keyfi noktalarda görüntülemek için FrontController sınıfına kendi geçersiz kılma özelliğini kullanıyorum - bu, modülün belirli bir kancayı desteklemesi gerekmediği anlamına gelir. Bu örnek kullanım için olabildiğince bir smarty Eklenti aracılığıyla uygulanan, bu yüzden edilir:

{plugin module='blockcart' hook='rightColumn'} 

yukarıdaki yukarıdaki etiketi eklenir sağ sütuna bağladım eğer gösterilecek ne çıkışa modülünü zorlar (olabilen herhangi bir tpl dosyasında herhangi bir yerde). Modülü, sağ sütundan "çıkartabilirsiniz", böylece yalnızca bu tekniği kullanmak istediğiniz yeri gösterir. Büyük bir başarı ile bir üretim sitesinde kullandım.

Prestashop 1.4 Plugins

+0

Harika bir çözüm Vay Paul! –

+0

Modüller ve kanca sistemi birçok durumda çalışırken, her zaman çok esnek olmayan bazı zamanlar olduğunu hissettim. Bunu yararlı bulduğunuz için memnunuz. –

+0

Mükemmel Paul! Bu arada, modülün kancasına bazı parametreleri iletebilir miyim? Teşekkürler! –

3

Prestashop 1.4'de temel sınıfları ve modül şablonlarını geçersiz kılabilirsiniz Bugün bu bir modül php dosyasını geçersiz kılmakla mümkün değil, bunun üzerinde çalışıyoruz.

1

PrestaShop sürümü 1.6.0.11 yana, geliştiriciler geçersiz kılmak için izin veren yeni bir özellik vardır: azından (gerekli kodu ile) nasıl çalıştığını mevcut açıklayan bir yazı dizisi var

modülün örnek sınıfları.

<?php 
if (!defined('_PS_VERSION_')) 
    exit; 
class BlockUserInfoOverride extends BlockUserInfo 
{ 
    public function hookDisplayNav($params) 
    { 
     return '<div class="header_user_info"><a>Test</a></div>'; 
     // return $this->display(__FILE__, 'nav.tpl'); 
    } 
} 

Kaynak: http://build.prestashop.com/howtos/module/how-to-override-modules/

bir modülün örnek sınıfını geçersiz kılmak için bunu uzatarak bir modülün örnek sınıfını geçersiz kılar , sen geçersiz kıl eki genişletilmiş sınıf aynı adı veren ve ekleyerek bunu uzatmak zorunda

İlgili konular