Yükseltme mi, yeniden inşa mı: PrestaShop 9'da eski bir modülle ne yapmalı?

Mağazanız PrestaShop 9'a taşınıyor ancak bir modül artık desteklenmiyor. Mevcut kodun yükseltilmesinin ne zaman yeterli olduğu ve yeniden inşa ettirmenin ne zaman daha iyi bir seçim olduğu.

Presta Support tarafından Yayınlandı İncelendi

İki yola ayrılan eski bir modül kartı: yukarı oklu limon yeşili bir yükseltme kartı ve yeni yapı taşlarıyla kesikli bir kart, yanında PrestaShop 9 rozeti

Mağazanız PrestaShop 9'a taşınıyor ancak bir modül geliştiricisi tarafından artık desteklenmiyor. Modülü yükseltmeli misiniz yoksa yeniden mi inşa ettirmelisiniz? PrestaShop 1.5'ten 8'e kadar yazılmış düzinelerce modülü yükselttik. Bu makalede, dikkat ettiğimiz işaretleri, hızlı bir öz kontrolü ve her bir yolun mağazanız için ne anlama geldiğini bulacaksınız.

Eski modüller PrestaShop 9'da neden bozulur?

PrestaShop 9, çoğu sürüm güncellemesinden daha büyük bir adımdır. PrestaShop 1.7 veya 8'de sorunsuz çalışan bir modül, kurulumu durdurabilir, bir sayfayı bozabilir veya en kötü durumda tüm yönetim panelini devre dışı bırakabilir. Nedenler neredeyse her zaman aynıdır:

  • Daha yeni bir PHP sürümü. PrestaShop 9, PHP 8.1 veya daha yenisini gerektirir. PHP 5 veya 7 için yazılmış kodlar; daha katı türler, kaldırılan fonksiyonlar ve hataya dönüşen uyarılarla karşılaşır.
  • Daha yeni bir Symfony. PrestaShop 9, Symfony 6.4 üzerinde çalışır (PrestaShop 8, Symfony 4.4 üzerindedir). Eski sürümün Symfony servislerini, formlarını veya rotalarını kullanan modüllerin ayarlanması gerekir.
  • Kaldırılan çekirdek metotlar ve sabitler. Tools::displayPrice() veya ajaxDie() gibi yıllardır kullanım dışı bırakılan (deprecated) fonksiyonlar kaldırılmıştır. Bu fonksiyonları çağırmaya devam eden bir modül, o kod çalışır çalışmaz hata verir.
  • Artık birlikte sunulmayan kütüphaneler. Eski modüller bazen Guzzle 5 veya SwiftMailer gibi PrestaShop'un kendi içinde sunduğu kütüphanelere güvenir. PrestaShop 9'da bunlar artık mevcut değildir.
  • Değiştirilen sınıfların geçersiz kılınmaları (overrides). Bir override, çekirdek bir sınıfın bir kısmını değiştirir. Bu sınıf değiştiğinde, override mağazayı bozabilir veya sessizce bir düzeltmeyi geri alabilir.

Değişikliklerin kendisi hakkında daha fazla bilgi edinmek için PrestaShop 9: yenilikler nelerdir ve PrestaShop 9.2 makalelerini okuyun.

Bir yükseltme genellikle şu durumlarda yeterlidir

  • modül bugün PrestaShop 1.7 veya 8 üzerinde kuruluyor ve çalışıyorsa;
  • sorunlar kaldırılmış metotlar ve sabitlerse (Tools::displayPrice() veya ajaxDie() gibi);
  • modül kendi mantığını kendi dosyalarında tutuyor ve çok az override kullanıyorsa;
  • şablonları Smarty veya Twig'i normal şekilde kullanıyorsa, böylece görünüm katmanı olduğu gibi kalabiliyorsa;
  • modülün yaptığı işten memnunsanız ve yalnızca çalışmaya devam etmesini istiyorsanız.

Düzeltmelerin çoğu mekaniktir: modül tam olarak aynı şeyi yapmaya devam eder, yalnızca çağırdığı kod güncellenir. PrestaShop 1.5 ve 1.6 için yazılmış modüller de genellikle sorunsuz bir şekilde yükseltilir. Ayarlarınız ve verileriniz yerinde kalır, modülün görünümü ve çalışması eskisi gibi olur.

Yeniden inşa etmeyi şu durumlarda düşünün

  • modül PHP içinde çok fazla HTML oluşturuyor ve bunu kaçışsız (unescaped) olarak yazdırıyorsa: bunu güvenli hale getirmek, tüm görünüm katmanını şablonlara taşımak anlamına gelir;
  • PrestaShop 9'da metotları değişen birkaç çekirdek sınıfı geçersiz kılıyorsa (override ediyorsa);
  • yükseltilmemiş başka bir modüle bağımlıysa (örneğin bir ödeme taban modülü);
  • PrestaShop 9'un artık sunmadığı Guzzle 5 veya SwiftMailer gibi eski kütüphaneleri içeriyorsa;
  • çok büyükse ve ayrıca PrestaShop Validator'ı geçmesi gerekiyorsa;
  • zaten yeni özellikler istiyorsanız, bu nedenle kodun büyük bir kısmını ne olursa olsun değiştirecekseniz.

Yeniden inşa etmek, eski modülün başarısızlığı değildir. Bazen kod yıllar içinde, temiz bir yükseltmeyi net bir tasarımdan başlamaktan daha zahmetli hale getirecek şekilde büyümüştür.

Hızlı öz kontrol

Gördüğünüz şey Şuna işaret eder
Modül PrestaShop 8'de çalışıyor ve yalnızca 9'da hata veriyor Yükseltme
Hatalar kaldırılmış bir metot veya sınıftan bahsediyor Yükseltme
Modülde hiç override yok veya çok az var Yükseltme
Modül sayfaları PHP'de HTML dizeleri olarak oluşturulmuş Yeniden inşa veya büyük bir yükseltme
Çekirdek sınıfların birkaç override'ı var Yeniden inşa veya büyük bir yükseltme
PrestaShop 9 sürümü olmayan başka bir modüle ihtiyaç duyuyor Önce o modüle bakın
Modülün ne yaptığını değiştirmek istiyorsunuz Yeniden inşa

Bunlar kural değil, işaretlerdir. Bir modül yeniden inşa için bir kutuyu işaretleyebilir ancak yine de sorunsuz bir şekilde yükseltilebilir. Bu yüzden fiyat vermeden önce test ediyoruz.

Karar vermeden önce neyi kontrol etmelisiniz

  1. Önce geliştiriciye sorun. Modül sayfasını veya PrestaShop Addons'ı kontrol edin: PrestaShop 9 için zaten bir sürüm mevcut olabilir.
  2. Modülün sizin için ne yaptığını listeleyin. Aslında hangi fonksiyonları kullanıyorsunuz? Yeniden inşa, kimsenin ihtiyaç duymadığı özellikleri dışarıda bırakabilir.
  3. Bağımlılıkları kontrol edin. Modülün başka bir modüle, tema özelliğine veya harici bir servise ihtiyacı var mı?
  4. Override'lara bakın. Yönetim panelinde Gelişmiş parametreler > Bilgiler altında override'ların etkin olup olmadığını görebilirsiniz.
  5. Mağaza yükseltmesiyle birlikte planlayın. Tüm mağazanız PrestaShop 9'a taşınıyorsa, bir kopya üzerinde tüm modülleri birlikte test edin. Bunu nasıl ele aldığımızı PrestaShop yükseltme hizmetimiz bölümünde okuyun.

Ne yapıyoruz

Bir modül yüklediğinizde, önce onu izole edilmiş bir PrestaShop 9.2 mağazasında test eder ve bulduklarımıza dayanarak bir fiyat veririz. Bir modülün yeniden inşa edilmesi daha iyi sonuç verecekse, siz ödeme yapmadan önce bunu size bildiririz. Modülünüzü yükseltttirin veya bunu kontrol etmemizi isteyin.

  • PrestaShop 9
  • Modüller
  • Yükseltmeler