Birbirinin ayağına basan iki eklenti
Her eklenti tek başınayken kusursuz çalışır. Birlikte etkinleştirildiklerinde sepeti bozar, bir sayfayı boşaltır ya da yönetim panelini kilitler. Çakışma açıklamalar okunarak tahmin edilmez: yalıtarak kanıtlanır ve bunun bir yöntemi vardır.
Hatadan çok çakışmaya işaret edenler
- Arıza, başka hiçbir değişiklik olmadan tam bir eklenti kurulumu anında ortaya çıktı
- Sorunlu eklentiyi devre dışı bırakmak sorunu çözüyor, ama diğer eklenti işlevini yitiriyor
- Bir sayfa ortasında kesiliyor, alt bölümü artık görünmüyor
- Bir buton tepki vermiyor ve tarayıcı konsolunda betik hatası görünüyor
- Bir etkinleştirmenin hemen ardından yönetim paneline erişilemiyor
Karşılaştığım dört çakışma biçimi
Geçersiz kılma çakışması. PrestaShop'ta bir eklenti, bir geçersiz kılma dosyası bırakarak çekirdek bir sınıfın davranışını değiştirebilir. Aynı sınıfın aynı yöntemini değiştirmek isteyen iki eklenti bir arada bulunamaz: ikincisi kurulmayı reddeder ya da daha kötüsü, dosyalar elle bırakılmışsa birinciyi sessizce ezer. Etkin olduğu hâlde «artık hiçbir şey yapmayan» bir eklentinin en sık nedeni budur.
Sıra çakışması. Aynı yere bağlanmış iki eklenti art arda çalışır ve ikincisi birincinin yaptığını geri alabilir: bir toplamı yeniden hesaplamak, bir içeriği değiştirmek, bir fiyatı yeniden tanımlamak. Sıra değiştirilebilir ve bazen sırayı değiştirmek her şeyi çözer.
Kitaplık çakışması. İki eklenti aynı JavaScript kitaplığının kendi sürümünü yükler. Sayfa ikisini de yükler, ikincisi birincisini ezer ve ilk sürüme bağlı olan her şey durur. Bu, sunucu günlüklerinde değil tarayıcı konsolunda görünür.
Ad çakışması. İki eklenti aynı adı taşıyan bir işlev ya da sınıf bildirir ve PHP ölümcül bir yeniden bildirim hatasıyla durur. WordPress'te bu, aynı üçüncü taraf kitaplığı önlem almadan içine alan eklentilerin klasik sorunudur.
Mağazayı bozmadan sorumluyu nasıl bulurum
-
Üretimde değil bir kopya üzerinde çalışmak
Sırayla devre dışı bırakarak yalıtmak, satış yapan bir mağazada kabul edilebilir değildir. Siteyi çoğaltır ve canlıda kabul edilemeyecek işlemleri orada yaparım.
-
Hiçbir şeye dokunmadan önce günlükleri okumak
Ölümcül bir yeniden bildirim hatası dosyayı ve satırı adıyla verir: çakışma hiçbir şey devre dışı bırakılmadan bir dakikada bulunur.
-
Teker teker değil ikiye bölerek ilerlemek
Eklentilerin yarısını devre dışı bırakır, denerim, sonra kalan yarıyı bölerim. Çok eklentili bir mağazada bu, deneme sayısını belirgin biçimde azaltır.
-
Aynı anda tarayıcı konsoluna bakmak
Bir JavaScript çakışması sunucu tarafında iz bırakmaz. Sayfa yükleniyor ama bir buton tepkisiz kalıyorsa cevap PHP günlüklerinde değil konsoldadır.
Sorumlu bulunduktan sonra dört olası çıkış
En basiti: çakışma bir sonucun ezilmesinden geliyorsa çalışma sırasını değiştirmek. İkincisi: iki eklentiden birinin işlevini, ikisini birden yapan tek bir eklentiye taşımak; bu, çakışmayı kökünden kaldırır. Üçüncüsü: ikisinden birini, aynı şeyi geçersiz kılmayan bir çözümle değiştirmek. En kalıcısız olan dördüncüsü ise sorunlu eklentiyi kendi kodunda düzeltmektir; ancak bu düzeltme yalıtılmadıysa bir sonraki güncellemede kaybolur.
Çakışmanın kazadan çok kırılgan bir alışkanlıktan geldiğini her zaman belirtirim: yalnızca bir alan eklemek için çekirdek sınıf geçersiz kılması bırakan ya da ortak bir kitaplığın kendi kopyasını taşıyan bir eklenti, ileride başka eklentilerle yeni çakışmalar üretecektir. Onu değiştirmek, her seferinde yamamaktan bazen ucuza gelir.
İlgili sayfalar
-
Güncelleme sonrası eklenti çakışması
Tetikleyicinin kurulum değil güncelleme olduğu durumda aynı konunun WordPress tarafı.
-
Eklenti kurulmayı reddediyor
Çakışma çalışmayı değil kurulumun kendisini engellediğinde.
-
PrestaShop'ta geçersiz kılma mı, eklenti mi
Sınıf geçersiz kılmasının neden en çok çakışma üreten teknik olduğu.
-
PrestaShop 500 hatası
Çakışma boş sayfa ya da sunucu hatası olarak göründüğünde.
İhtiyacınızı bir dakikada anlatın
Size bir anket daha değil, doğrudan bir tahmin sunabilmem için birkaç hedefli soru.