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

PrestaShop 1.6’dan 1.7’ye: temayı değiştiren basamak

PrestaShop’ta 1.6’dan 1.7’ye geçmek, daha ileri gitmek için atılması zorunlu ilk adımdır: tema motoru değişir, yönetim panelinin bir kısmı Symfony’ye taşınır ve ödeme sayfasındaki ödeme yöntemleri hook’u artık aynı değildir. İşte somut olarak neyin bozulduğu ve bunu nasıl ele aldığım.

Sorunumu anlatayım Mesaj gönderin

1.6 ile 1.7 arasında gerçekte ne değişiyor

PrestaShop 1.6, özel bir “legacy” framework’e ve tamamen Smarty’ye dayalı bir şablon sistemine sahiptir; varsayılan teması Default’tur. 1.7’den itibaren, yönetimin bir kısmı ve bazı ön yüz denetleyicileri, bu ekranlar için Twig kullanılarak Symfony’ye taşınır; Smarty geri kalanı için kullanılmaya devam eder: mimari hibrit hâle gelir. Varsayılan tema da ad değiştirir; 1.6 teması Bootstrap 3 üzerindeyken Bootstrap 4 tabanlı Classic, Default’un yerini alır. Çok özelleştirilmiş olsa bile bir 1.6 teması 1.7’ye olduğu gibi kurulamaz: şablon şablon yeniden inşa edilmesi gerekir.

Mağazaları en sık bozan değişiklik, ödeme adımıyla ilgilidir. 1.6’da ödeme eklentileri displayPayment hook’una bağlanır. 1.7’den itibaren bu hook paymentOptions ile değiştirilir. Güncellenmemiş bir eklenti, herhangi bir hata mesajı vermeden ödeme adımında artık görünmez: müşteri ödeme yapamaz.

Veritabanı yapısı da iki ana sürüm arasında değişir; yeni tablolar ve yeniden adlandırılmış sütunlar eklenir: olduğu gibi geri yüklenen ham bir SQL dökümü güvenilir değildir, gerekli şema güncelleme betiklerini çalıştıran resmi autoupgrade eklentisidir.

1.6’dan 1.7’ye geçişte tipik olarak neler bozulur

  • Ödeme eklentisi, displayPayment hook’u artık çağrılmadığı için hiçbir hata mesajı vermeden ödeme adımından kaybolur.
  • Tema boş bir sayfa veya bozuk bir görünüm gösterir; 1.6’nın .tpl şablonları artık 1.7’nin dizin yapısıyla uyuşmaz.
  • Yönetim panelinin bazı ekranları yer değiştirir; yönetimin bir kısmı artık Symfony denetleyicileri tarafından yönetilir.
  • Eski süslü parantez dizi erişim söz dizimini kullanan eklentiler (örn. $array{0}), PHP de yükseltilmişse ölümcül hatalar verir.

1.6’dan 1.7’ye geçişi nasıl yürütüyorum

  1. Eklentilerin ve temanın envanteri

    Kurulu her eklentiyi ve sürümünü listeliyor, yapılandırma dosyasında 1.7 uyumluluğu bildirip bildirmediğini kontrol ediyorum — aynısını tema için de yapıyorum.

  2. Herhangi bir işlem yapmadan önce tam yedekleme

    Herhangi bir şey çalıştırmadan önce sitenin tüm dosyalarını, tam bir veritabanı dökümünü ve kritik eklentilerin (ödeme, taşıyıcı) yapılandırmasını yedekliyorum.

  3. Mağazanın bir kopyası üzerinde geçiş

    autoupgrade eklentisini bir test ortamında çalıştırıyorum, asla üretimde değil. Güncellemeden önce dosyaları ve veritabanını tekrar yedekliyor; hata durumunda geri yükleme sunuyor.

  4. Temanın yeniden inşası ve ödeme hook’unun değiştirilmesi

    Temayı Classic üzerine uyarlıyor veya yeniden inşa ediyor, her ödeme eklentisinin eski displayPayment yerine paymentOptions kullandığını kontrol ediyorum.

  5. Kontrol, ardından geçiş

    Test mağazası onaylandıktan sonra, devam eden siparişler üzerindeki etkiyi sınırlamak için üretime geçişi düşük trafikli bir zaman dilimine planlıyorum.

Neyi yedekliyorum, sonrasında neyi kontrol ediyorum

Herhangi bir şey çalıştırmadan önce, sitenin tüm dosya ağacını (.php dosyaları, tema, eklentiler, görseller), tam bir veritabanı dökümünü ve hook değişikliğine en duyarlı ödeme ile taşıyıcı eklentilerinin yapılandırmasını yedekliyorum; bunu autoupgrade/backup klasörünün dışında saklıyorum, çünkü bu klasör sonraki bir denemeyle üzerine yazılabilir.

Geçişten sonra, sipariş, müşteri ve katalog ürünü sayısının öncekiyle eşleştiğini, ana URL’lerin doğru durum koduyla yanıt verdiğini ve yönlendirmelerin çalıştığını kontrol ediyorum. Ayrıca sepetten ödemeye eksiksiz bir sipariş testi yaparak eklentinin paymentOptions hook’uyla doğru göründüğünü doğruluyorum.

monmodule.php
// PS 1.6
$this->registerHook('displayPayment');

// PS 1.7+
$this->registerHook('paymentOptions');

Bu geçişi hazırlamak veya tamamlamak için

  • PHP 5.2 – 7.1 PrestaShop 1.6
  • Alt sürüme göre PHP 7.2 – 7.4 PrestaShop 1.7

devdocs.prestashop-project.org

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

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

version-depart
version-arrivee
catalogue
modules-tiers (facultatif)
conserver (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

Geçişten sonra ödeme eklentisi ödeme adımından kayboldu, neden?
Neredeyse her zaman hook’tan kaynaklanır. 1.6’da ödeme eklentileri displayPayment’a bağlanır; 1.7’den itibaren bu hook paymentOptions ile değiştirilir. Eklenti güncellenmemişse, herhangi bir görünür hata olmadan basitçe artık görüntülenmez.
Özelleştirdiğim 1.6 teması 1.7’de olduğu gibi çalışacak mı?
Hayır. Varsayılan tema hem ad hem taban değiştirir (Classic, Default’un yerini alır) ve hibrit Symfony/Smarty mimarisiyle şablon dizin yapısı değişir: tema uyarlanmalı veya şablon şablon yeniden inşa edilmelidir.
PrestaShop 1.6’da kalmak riskli mi?
1.6’nın resmi bakımı 30 Haziran 2019’dan beri durdurulmuştur: hangileri olduğu veya ne zaman istismar edileceği söylenemeyen, artık düzeltilmeyen güvenlik açıklarına maruz kalınır.
1.7’ye geçtikten sonra hangi PHP sürümünü hedeflemeliyim?
Seçilen 1.7 alt sürümüne bağlıdır: yalnızca 1.7.5 ile 1.7.8 arası sürümler PHP 7.2’yi destekler, yalnızca 1.7.8 PHP 7.4’ü destekler. Hiçbir 1.7.x sürümü PHP 8 altında çalışmaz.