PrestaShop 9 conviene aggiornare?

Arriva finalmente PrestaShop 9, un passo importante per il progresso dell’intera piattaforma e-commerce. Con l’adozione di Symfony 6.4, l’implementazione di Smarty 4 e il rilascio di una nuova Admin API costruita su API Platform, questa versione dovrebbe fornire migliori ottimizzazioni, una sicurezza rinforzata e una base tecnica più robusta per il futuro. A queste innovazioni, però, si accompagnano cambiamenti significativi che rompono il supporto per i moduli di terze parti: molte classi legacy di uso comune Tools::displayPrice, Tools::encrypt() e l() sono state deprecate o completamente rimosse, causando la necessità di aggiornamenti sostanziali ai moduli e template di terze parti.

Proprio per questo, è da preferire un approccio prudente relativo all’upgrade in ambienti di produzione, per permettere agli sviluppatori di aggiornare le proprie estensioni e temi al nuovo ecosistema di PrestaShop 9.

Principali novità di PrestaShop 9

  • Symfony 6.4 LTS: aggiornamento al framework con supporto a lungo termine, maggiore stabilità e sicurezza.
  • Compatibilità con PHP 8.1 – 8.4: supporto esteso alle versioni più recenti del linguaggio.
  • Nuova Admin API: interfaccia di programmazione completamente riscritta per integrazioni moderne e RESTful.
  • Tema Hummingbird: nuovo tema front-end basato su Bootstrap 5, TypeScript e metodologia BEM
  • Esperienza sviluppatore migliorata: rimozione del codice legacy, dipendenze aggiornate, strumenti più moderni e documentazione rivista

Deprecazioni e classi legacy rimosse

Come già accennato, l'aggiornamento a PrestaShop 9 richiederà un'attenta analisi sia dei moduli che dei template, poiché molte classi legacy che sono ancora comunemente usate per la compatibilità retroattiva sono state rimosse. Questo rende essenziale aggiornare il codice per evitare bug di esecuzione o errori. La tabella qui sotto riassume le classi e i metodi deprecati più importanti, ordinati per la probabilità del loro utilizzo in moduli e temi.

Classe/MetodoDescrizione
Tools::displayPriceMetodo comunemente usato nei template per mostrare i prezzi, ora rimosso
Tools::encrypt / Tools::encryptIVUsati in vari moduli per crittografia semplice, ora rimossi
Translate::getAdminTranslationMetodo per traduzioni back office, ora rimosso in favore del nuovo sistema
Tools::displayNumberFormattazione numerica nei template, deprecato e rimosso
Controller::addJqueryMetodo per includere jQuery nei moduli, non più supportato
Validate::isPlaintextPassword / isPasswdAdminControlli sulla validità delle password, ora gestiti diversamente
Tab::getClassNameMetodo legacy per ricavare la classe associata a un Tab
SpecificPrice::setPrioritiesGestione delle priorità dei prezzi specifici, metodo deprecato
AdminPdfController::generateInvoicePDFByIdOrderMetodo per generare PDF fatture da ID ordine, ora rimosso
Product::getProductPropertiesUsato per arricchire i dati prodotto, ora spostato su ProductLazyArray
FrontController::addColorsToProductListFunzione legacy per la gestione dei colori dei prodotti
Tools::clearColorListCacheMetodo per svuotare la cache dei colori prodotto, ora rimosso
AdminController::isFresh / refreshMetodi di gestione della cache delle pagine back office
Cart::simulateCarriersOutputMetodo di simulazione dei corrieri, non più utilizzato
Upload e FileUploadClassi legacy per l’upload dei file, completamente rimosse
Validate::isAnythingMetodo di validazione generico, ora rimosso
Tools::getBrightness / isBrightMetodi grafici legati alla luminosità dei colori
OrderReturn (parametri deprecati)Rimozione di parametri obsoleti per la gestione dei resi
Tools::stripslashes / safePostVarsMetodi di sanificazione input legacy, ora rimossi
displayFlagsVariabile legacy utilizzata per visualizzare le bandiere delle lingue

Quanto tempo servirà per aggiornare i moduli e i temi?

Per via del cambiamento del core e della rimozione di classi legacy, e dei nuovi requisiti tecnici, molti moduli, dovranno essere riscritti o aggiornati, specialmente quelli che:

  • usano Tools::displayPrice, Tools::encrypt(), l()
  • dipendono da librerie rimosse integrano funzionalità utente (password)
  • utilizzando Bootstrap 4 nelle interfacce Sarà necessario un riscrittura o un aggiornamento.

Il tempo necessario per aggiornare molti moduli o template potrebbe richiedere anche diversi mesi, soprattutto nel caso di moduli poco diffusi, di nicchia o particolarmente complessi. Il nostro consiglio è di non utilizzare la versione 9 attualmente in ambienti di produzione e di attendere la prossima minor release, che con ogni probabilità correggerà molti dei bug introdotti con questo importante aggiornamento.

Che fine ha fatto la versione GitHub?

Una nota dolente riguarda la scomparsa della versione “pulita” di PrestaShop su GitHub: a partire dalla versione 9, non sarà più disponibile la build non brandizzata direttamente pronta all’uso. Per ottenere una versione realmente “pulita” e più stabile, sarà necessario scaricare i sorgenti dal repository e generare il pacchetto manualmente utilizzando lo script tools/build/CreateRelease.php.

Esistono comunque versioni "non ufficiali" di PrestaShop non Brandizzate, come la seguente:

https://github.com/matrixino/VanillaPrestaShop

In alternativa, anche se non è la soluzione ideale, è possibile installare la PrestaShop Edition Basic, scaricabile da prestashop.com, scegliendo durante l’installazione di non includere i seguenti moduli:

Nome moduloFunzione
PrestaShop Classic EditionPrestaShop Classic Edition introduce modifiche al tema del back office e include link e comunicazioni promozionali relativi a servizi e offerte commerciali a pagamento di PrestaShop SA, come ad esempio il collegamento al 'Care Center'.
PrestaShop CheckoutSoluzione integrata per gestire pagamenti (carte, PayPal, metodi locali) con sicurezza ottimizzata.
PrestaShop AccountGestisce l’autenticazione e la registrazione utenti con integrazione all’ecosistema PrestaShop.
PrestaShop MarketplaceIl modulo ha la funzione di controllare e aggiornare con un clic le licenze dei moduli acquistati su PrestaShop Addons. Facilita quindi la gestione degli aggiornamenti e delle attivazioni, ma non è indispensabile, a meno che non si utilizzino moduli che richiedono attivazione per funzionare correttamente o che sono legati a un abbonamento attivo.
PrestaShop CloudSyncPermette la sincronizzazione di dati (prodotti, ordini, stock) tra store e servizi cloud. Purtroppo in modo non trasparente.
PrestaShop ShippingSemplifica la gestione delle spedizioni e dei corrieri direttamente dal pannello di controllo attraverso Mail Boxes Etc. Servizio purtroppo se pur valido, non competitivo. 
PrestaShop MarketingConsente di migliorare la visibilità online e promuovere prodotti su canali come Google. Purtroppo è in abbonamento mensile, meglio optare per moduli di terze parti che forniscano una licenza self-hosted.
PrestaShop SocialsSincronizza il catalogo con Facebook e Instagram per incrementare la presenza sociale. Anche questo in abbonamento e superato in molte funzioni da moduli ben più completi e soprattutto self-hosted. 

Fatto salvo che non siano indispensabili per il vostro progetto, questi moduli fanno parte del PrestaShop Integration Framework, che – come abbiamo più volte segnalato – non solo risulta piuttosto instabile, ma introduce una logica ibrida SaaS, in contrasto con la natura self-hosted di un CMS come PrestaShop. Inoltre, questi moduli effettuano uno scambio costante di dati con PrestaShop Addons e con diversi partner commerciali, spesso trasmettendo informazioni non essenziali al funzionamento dei moduli stessi. Per approfondire, si veda l'articolo:

Il modulo di pagamento PrestaShop Checkout è ormai da abbandonare

In conclusione

Dopo oltre due anni di sviluppo, PrestaShop 9 introduce un gran numero di aggiornamenti significativi, modernizzando molte funzionalità per rispondere alle esigenze attuali del commercio online. Tuttavia, questo importante passo avanti è in parte oscurato dalla crescente spinta verso l’adozione del PrestaShop Integration Framework, una scelta che sembra mirare più alla monetizzazione che all’interesse della community, avvicinando PrestaShop a un modello ibrido SaaS, ispirato a quello di Shopify. Il risultato è una piattaforma che rischia di perdere la propria identità: né completamente libera, né davvero integrata. La forza di PrestaShop è sempre stata la sua natura self-hosted e open source, che consente agli utenti di installare, modificare e gestire il proprio e-commerce in piena autonomia. A nostro avviso, la direzione intrapresa da MBE rappresenta una scelta discutibile, che rischia di allontanare sviluppatori e merchant da ciò che ha reso PrestaShop un progetto di riferimento nel panorama open source.

Nota: cosa significa SaaS e self-hosted?

Una piattaforma SaaS (Software as a Service) è un software distribuito come servizio online, accessibile tramite browser, in cui l’utente non gestisce direttamente l’infrastruttura o il codice. Un esempio noto è Shopify: tutto è ospitato e controllato dal fornitore del servizio, che impone vincoli su funzionalità, personalizzazioni e aggiornamenti.

Al contrario, una piattaforma self-hosted come PrestaShop (nella sua forma originaria) consente all’utente di scaricare, installare, modificare e controllare completamente il software sul proprio server. Questa modalità offre massima libertà, trasparenza e indipendenza, a fronte di una maggiore responsabilità nella gestione tecnica.

Autore: Loris Modena

Loris Modena

SENIOR DEVELOPER

Per Ind Loris Modena titolare di Arte e Informatica, inizia a lavorare nel settore informatico nel 1989 quale sistemista addetto alla manutenzione e installazione di sistemi informatici. Inizia a programmare per il web nel 1997 occupandosi di programmazione CGI in PERL e successivamente passando alla programmazione in PHP e JavaScript. In questo periodo si avvicina al mondo Open source e alla gestione di server Linux. 

prodotto aggiunto alla lista