|
Ciao,
oggi creiamo un modulo che non serva a visualizzare qualche cosa in front office ma che ci permetta di lavorare in back office.
Creiamo quindi una cartella in modules:
u_module_db il relativo file u_module_db.php e la funzione di apertura <?php class u_module_db extends Module { //nostro codice dentro }
Il modulo è creato. Ora definiamo la costruct: function __construct() { $this->name = 'u_module_db'; $this->tab = 'PSM'; $this->version = '0.0'; parent::__construct(); $this->displayName = $this->l('Universal Module'); $this->description = $this->l('...'); }
Questa parte è già ben documentata nel nostro modulo hello world
Ora creiamo il tasto "configure" del modulo con dentro un bottone GO che ci permetta di lanciare la funzione che vogliamo: function getContent() { $this->_html = '<h2>'.$this->displayName.'</h2>'; if (isset($_POST['btnSubmit'])) { $this->bdgo(); } $this->_html.='<form action="'.$_SERVER['REQUEST_URI'].'" method="post"> <div></div> <input name="btnSubmit" value="'.$this->l('GO').'" type="submit" /> </fieldset></form>'; return $this->_html; } da notare semplicemtne: che se ritorna la pagina dal form dopo aver premuto btnSumbit ($_POST['btnSubmit']) allora eseguiamo la funzione (interna $this->) dbgo()
che ora andiamo a scrivere: private function bdgo() {
$prods = Db::getInstance()->ExecuteS('SELECT id_product FROM '._DB_PREFIX_.'product');
foreach ($prods as $prod){ $cats = Db::getInstance()->getRow('SELECT id_category FROM '._DB_PREFIX_.'category_product WHERE id_product='.$prod['id_product'].' ORDER BY id_category DESC'); $sql='UPDATE '._DB_PREFIX_.'product SET id_category_default='.$cats['id_category'].' WHERE id_product='.$prod['id_product']; Db::getInstance()->Execute($sql); }
$this->_html .='done';
return $this->_html; }
Quindi all'interno della funzione, prendiamo gli ID di tutti i prodotti (SELECT id_product FROM...)
li scorriamo tutti foreac ($prods as $prod) prendiamo l'ultimo id della categoria del prodotto SELECT id_category FROM category_product........ORDER BY id_category DESC.... e inseriamo nella tabella del prodotto l'id ricavato come id della categoria default
questo esempio di modulo lo utilizzo quando mi ritrovo dopo un import o un'update da un vecchio prestashop ad uno versione 1.3.x o successive che non è presente la categoria di default (non esisteva prima)
Ma ovviamente scorrere tutti i prodotti può servire a mille cose, export, update, liste.....
|