Projeler ve ajans desteği için müsait · Hızlı yanıt, işi yapan kişiden

PrestaShop'ta «Sepete ekle» butonu yanıt vermiyor

«Sepete ekle» butonuna tıklandığında hiçbir şey olmuyor ya da 500 hatası veriyor: buradaki sorun sepetin içeriği değil, işlemin kendisinin tetiklenmemesi veya yolda çökmesidir. Buton, sepet denetleyicisine (controller) yapılan bir Ajax çağrısına bağlıdır, ve birkaç kesin nokta bu çağrıyı engelleyebilir.

Sorunumu anlatayım Mesaj gönderin

Tıklandığında teknik olarak ne olur

Bir ürün sayfasında veya listelemede, «Sepete ekle» butonu sayfayı yeniden yüklemeden temanın sepet denetleyicisine bir Ajax çağrısı gönderir. Görsel olarak hiçbir şey olmuyorsa, sorun neredeyse her zaman bu çağrı gönderilmeden önce yaşanır: bir JavaScript çakışması butonun betiğinin çalışmasını engeller.

En sık görülen durum, jQuery'nin iki kez yüklenmesidir: bir kez tema tarafından, bir kez de zaten yüklü olanı kontrol etmeden kendi betiğini ekleyen bir eklenti tarafından. İkinci yükleme birinciyi ezer ve o ana kadar eklenmiş tüm olay dinleyicileri, sepet butonununki dahil, çalışmayı durdurur.

Tıklama 500 hatası verdiğinde

Ajax çağrısı gerçekten gönderiliyor ama 500 hatasıyla dönüyorsa, neden neredeyse her zaman sunucu tarafındadır: sepete eklendiğinde tetiklenen bir hook'a bağlı bir eklenti — örneğin actionCartSave. Bu noktada sessizce çöken bir eklenti, sitenin geri kalanı normal çalışsa bile işlemi tüm ziyaretçiler için engeller.

Bir diğer sık görülen durum: zorunlu bir kombinasyonun (beden, renk) seçilmemiş olmasıdır. Tema bu doğrulamayı istemci tarafında iyi yönetmiyorsa, ekleme herhangi bir görünür mesaj olmadan başarısız olur, bu da ölü bir buton izlenimi verir.

Yapılandırma mı, geliştirme mi?

Önbelleği temizlemek, JavaScript çakışmasını izole etmek için eklentileri tek tek devre dışı bırakmak veya hatalı eklentiyi bulmak için hata günlüklerini kontrol etmek: bu teşhis çalışması genellikle kesin nedeni belirlemek için yeterlidir. Çakışan eklentinin kodunun yeniden yazılması, kurulu sürüm için bir hook'un uyarlanması ya da sipariş gönderiminin çift tıklamaya karşı güvence altına alınması gerektiğinde bu bir geliştirme konusu hâline gelir.

İlgili sayfalar

İhtiyacınızı bir dakikada anlatın

Size bir anket daha değil, doğrudan bir tahmin sunabilmem için birkaç hedefli soru.

version
besoin
etat
theme (facultatif)
Size dönebilmem için en az bir e-posta veya telefon numarası belirtin.

Size dönebilmem için en az bir e-posta veya telefon numarası belirtin.

Sıkça sorulan sorular

Buton mobilde hiçbir şey yapmıyor ama bilgisayarda çalışıyor, neden?
Genellikle aynı JavaScript çakışmasıdır, ancak bir mobil tema veya sitenin hafifletilmiş bir sürümü bazen farklı betikler yükler, bu da sorunun neden yalnızca bir cihaz türünde ortaya çıktığını açıklar.
Butonu bir eklentinin engelleyip engellemediğini nasıl anlarım?
Yakın zamanda kurulmuş veya güncellenmiş eklentileri tek tek devre dışı bırakıp her birinden sonra yeniden test ediyorum. Kodunu incelemeden önce sorumlu eklentiyi izole etmenin genellikle en hızlı yolu budur.
Hata bir PrestaShop güncellemesinden hemen sonra ortaya çıktı, bu bağlantılı mı?
Evet, bu sık görülen bir tetikleyicidir: eski bir sürüm için yazılmış bir eklenti, davranışı değişmiş bir hook'a bağlı olabilir, bu da sitenin geri kalanına dokunmadan sepete eklemeyi bozar.
«Sipariş ver» üzerinde çift tıklama gerçekten iki sipariş oluşturabilir mi?
Evet, ilk gönderim hâlâ işlenirken ikinci bir gönderimi hiçbir şey engellemiyorsa. Bu, sepete ekleme sorunundan ayrı olarak sistematik şekilde kontrol ettiğim bir noktadır.
Bu tür bir hata için bir geliştiriciye ihtiyaç var mı?
Her zaman değil: devre dışı bırakıp test ederek nedeni izole etmek genellikle yeterlidir. Çakışan eklentinin kodunu düzeltmek veya eski bir hook'u uyarlamak gerektiğinde geliştirme gerekli hâle gelir.