Personalizzare PrestaShop: la lista prodotti nel backend

PrestaShop è sicuramente una dei CMS più utilizzati per creare in maniera rapida e funzionale un e-commerce di successo, ma iniziando a lavorarci con frequenza ci si rende conto che spesso è necessario espanderne le funzionalità per renderne l’utilizzo più comodo ed agevole.
Ad esempio, ti è mai capitato di avere centinaia, se non migliaia di prodotti in catalogo e volerli filtrare per brand nel backend?
- Leggi l'articolo, ti bastano solo 2 minuti, 12 secondi
Sei di fretta? Scarica il PDF e consultalo quando vuoi!
Sommario
1 Elenco prodotti predefinito |
2 L'override delle classi di PrestaShop |
3 Ricostruiamo la cache delle classi |
4 Commenti |
Elenco prodotti predefinito
Chi ha utilizzato PrestaShop almeno una volta, sa che non possibile farlo nell’installazione di default. Sembra strano, eppure è proprio così!
Ma niente paura, la soluzione è a portata di mano!
L'override delle classi di PrestaShop
Il sistema di espansione utilizzato da PrestaShop è davvero molto molto semplice. Basta un minimo accenno ai concetti di ereditarietà delle classi, tra le prime nozioni di programmazione ad oggetti, che non approfondiremo però in questa sede per non perdere il focus della guida.
Nel caso ipotizzato, il Controller che si occupa di visualizzare l’elenco prodotti nella sezione admin è AdminProductsController, che si trova della cartella:
controllers/admin/
nella root nello spazio FTP del tuo sito.
Non ci resta che “estenderlo” aggiungendo il campo che ci occorre. Per farlo, crea un nuovo file:
override/controllers/admin/AdminProductsController.php
ed aggiungi il seguente codice:
<?php class AdminProductsController extends AdminProductsControllerCore { public function __construct() { parent::__construct(); $this->_join .= ' LEFT JOIN `' . _DB_PREFIX_ . 'manufacturer` m ON a.`id_manufacturer` = m.id_manufacturer '; $this->fields_list['manufacturer'] = array( 'title' => $this->l( 'Manufacturer' ), 'filter_key' => 'm!name' ); } }
In pratica, dopo aver richiamato la funzione costruttore della classe “padre” AdminProductsControllerCore, da cui deriva la nuova classe appena definita, abbiamo aggiunto una join alla query di default del Controller, così da avere accesso anche ai campi relativi ai produttori (manufacturer) ed estrapolarne il nome.
L’ultima istruzione, estende la lista di colonne da visualizzare nell’elenco, a cui aggiungiamo appunto la colonna “manufacturer” definendo il titolo e il corrispondente campo da cui estrapolare il valore, così come definito nella tabella appena collegata.
Ma un attimo! Ti starai chiedendo per quale motivo la colonna non è comparsa nell’elenco. Tranquillo, non hai fatto alcun errore (lo dico sulla fiducia, eh). Bisogna effettuare un ultimo piccolo passaggio per rendere effettive le modifiche.
Ricostruiamo la cache delle classi
Tieni sempre a mente che ogni qual volta crei manualmente l’override di una classe di PrestaShop, bisogna far ricostruire la cache delle classi utilizzate. Per farlo, è necessario rimuovere il file:
cache/class_index.php
Basta un refresh della pagina e noterai che il file viene immediatamente rigenerato. Da questo momento, PrestaShop si accorgerà delle modifiche da te effettuate ed il gioco è fatto!
In questo modo, potrai ordinare o filtrare per brand, magari combinando il nuovo filtro con gli altri per estrapolare i dati che preferisci.