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
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'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.
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
- 1. PrestaShop en .tpl dosyası &
- 2. Prestashop tüm ürünler
- 3. 404 Sayfa Prestashop Multistore
- 4. Prestashop geçiş yordamı
- 5. Prestashop - sepet toplam fiyat
- 6. PHP Uyarı: move_uploaded_file (Prestashop)
- 7. Prestashop - Db şifresi nasıl şifrelenir?
- 8. WebService Prestashop değer alanlarını göstermiyor
- 9. Prestashop web hizmetleri ürün listesi sayfalandırma
- 10. == geçersiz kılma == geçersiz kılma
- 11. Prestashop Sorgulamada tüm ürünleri ondan nasıl alabilirim?
- 12. Prestashop oturum kapatma kullanıcı programlı olarak
- 13. Prestashop yönetici panelinde yeni sayfa nasıl oluşturulur?
- 14. Prestashop 1.6.1.4 - Özel modül için tanımlanmamış sabit
- 15. Prestashop: Ürün sepetine yeni bir ürün ekle
- 16. JS modülü desen geçersiz kılma işlevi
- 17. Prestashop, yerel mağazalarınızı global bir mağaza ile senkronize edin
- 18. UserManager'ı django'ya geçersiz kılma
- 19. TinyMCE, Prestashop 1.6'da veri özniteliğine izin ver
- 20. Omurganın ayrıştırma işlevini geçersiz kılma
- 21. "Soyut geçersiz kılma" neden subtraitda "geçersiz kılma" gerektirmiyor?
- 22. Varsayılan php işlevini geçersiz kılma
- 23. Omurgada getirme yöntemini geçersiz kılma
- 24. İyonik yapı platformu geçersiz kılma
- 25. Geçersiz kılma log4j.properties
- 26. Javascript: XMLHttpRequest.open'i geçersiz kılma()
- 27. geçersiz kılma temsilci özelliği
- 28. Bootstrap CSS'yi geçersiz kılma
- 29. geçersiz kılma yöntemi
- 30. Ruby'de geçersiz kılma == işleci
Harika bir çözüm Vay Paul! –
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. –
Mükemmel Paul! Bu arada, modülün kancasına bazı parametreleri iletebilir miyim? Teşekkürler! –