Passa ai contenuti principali

Develop Prestashop Module - puntata 1 creazione di un modulo prestashop



la creazione o lo sviluppo di un modulo Prestashop funziona sia per il front-end che il back-end del sistema
la struttura di un modulo è fissa che si compone con una serie di step:

  • file di configurazione
  • file di installazione
  • files controllers per l'amministrazione
  • files controllers per il frontend
  • files delle view

creazione dell'infrastruttura base del modulo per Frontend

all'interno della cartella modules di prestashop creare una cartella 
esempio
    <root>
         |---modules
                   |-----miomodulo

naturalmente il nome del modulo lo potete personalizzare
all'interno della cartella miomodulo creare i seguenti file
  1. config.xml
  2. index.php
  3. miomodulo.php   <-- inserite il vostro nome modulo al posto di mio modulo

index.php

il codice di index php, file che dovrà essere inserito in ogni cartella:
<?php
/*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2013 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");

header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

header("Location: ../");
exit;

config.xml

il file contiene delle semplici configurazioni per installare il modulo, anche se la vera installazione sarà eseguita con un'altro file
<?xml version="1.0" encoding="UTF-8" ?>
        <module>
            <name>miomodulo</name>
            <displayName><![CDATA[Il mio modulo]]></displayName>
            <version><![CDATA[1.0]]></version>
            <description><![CDATA[Descrizione del mio modulo]]></description>
            <author><![CDATA[Bwlab - www.bwlab.it - info@bwlab.it]]></author>
            <tab><![CDATA[others]]></tab>
<confirmUninstall>Sicuro che vuoi disinstallare il modulo?</confirmUninstall>
            <is_configurable>1</is_configurable>
            <need_instance>1</need_instance>
<limited_countries></limited_countries>
        </module>

il tag tab inserisce il modulo nella categoria che trovate nella lista dei moduli in back-end
e le categorie sono
  1. admnistration
  2. advertising_marketing
  3. analytics_stats
  4. billing_invoicing
  5. checkout
  6. front_office_features
  7. migration_tools
  8. payments_gataweys
  9. payment_security
  10. pricing_promotion
  11. search_filter
  12. seo
  13. shiping_logistics
  14. smart_shoppig
  15. market_place
  16. others
  17. mobile

miomodulo.php

questo è il contenuto standard di un file di installazione modulo
<?php
if (!defined('_PS_VERSION_')) {
    exit;
}

class MioModulo extends Module
{

    /* @var boolean error */
    protected $_errors = false;

    public function __construct()
    {

        $this->name = 'miomodulo';   <-- inserite il nome del vostro modulo
        $this->tab = 'others';             <-- la categoria del modulo
        $this->version = '1.0';      
        $this->author = 'Bwlab - www.bwlab.it - info@bwlab.it';
        $this->displayName = $this->l('Il mio modulo');
        $this->description = $this->l('Descrizione del mio modulo.');
        $this->confirmUninstall = $this->l('sicuro della disinstallazione?');

        parent::__construct();
    }

     //questo metodo viene richiamato per 'installazione
    public function install()
    {
        if (!parent::install()) {
            return false;
        }

        $sql = array();

      //in questo momento si imposta l'sql per la creazione di una o più tabelle
      //   notate il _DB_PREFIX_
        $sql[] = 'CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'miomodulo` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 `title` text,
 PRIMARY KEY  (`id`)
) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;';

        //creazione effettiva tabelle
        foreach ($sql as $s)
            if (!Db::getInstance()->Execute($s))
                return false;

       return true;
    }

   //questo è il metodo di disinstallazione del modulo
    public function uninstall()
    {
        if (!parent::uninstall()) {
            return false;
        }
        $sql = array();
        $sql[] = 'DROP TABLE IF EXISTS `'._DB_PREFIX_.'bwlab_miomodulo`;';

        foreach ($sql as $s)
            if (!Db::getInstance()->Execute($s))
                return false;

        return true;
    }
  
}

abbiamo settato il modulo e lo possiamo installare

basta andare sulla lista dei moduli nel back-end e lo vedremo elencato nella categoria assegnata
ma ora che ce ne facciamo?
alla prossima puntata

Post popolari in questo blog

install language on osTicket

this simple guide aims you to install and configure your language on osTicket i written this guide based on forum post http://osticket.com/forum/discussion/76252/installing-language-pack

Trasferimento server to server (LINUX) della casella email

Oggi ho scoperto un tool veramente molto utile per il trasferimento server to servevr delle caselle email. Ed è acnhe veloce.
Si chiama imapsync [rif: https://imapsync.lamiral.info/ ]In pratica il tool da linea di comando si connette via imap al server email precedente e trasporta tutto al server di destinazioneLo uso quando faccio migrazioni di vps.Come funziona imapsync per sincronizzare e emailInternet è una risorsa. Da questo blog ho preso tutte le indicazioni https://www.jverdeyen.be/ubuntu/imapsync-on-ubuntu/Uso una distribuzione ubuntu 14.04. Non esiste un pacchetto precompilato da installare. imapsync si basa su perl. Ve lo ricordate? Mica è andato in disuso.Primo: si installano le dipendenze di imapsync per la migrazione mail server to serversudo apt-get install makepasswd rcs perl-doc libio-tee-perl git libmail-imapclient-perl libdigest-md5-file-perl libterm-readkey-perl libfile-copy-recursive-perl build-essential make automake libunicode-string-perl Secondo: si scarica i…

Vich Uploader: due note per ricordare un apio di aspetti

la documentazione del bundle symfony vich uploader è chiara, anche se non è perfetta
quindi ecco un paio di note per non incappare in errori sciocchi che però fanno perdere tempo.
la configurazione in config.yml contiene le specifiche di come devono essere trattati i files in upload
la configurazione ha un nome e si chiama mapping. nella documentazione del bundle è product_image
nell'entity che conterrà l'immagine è necessario specificare due campi: imageFile e imageName
imageFile contiene il riferimento alla classe symfony File, che è il file effettivo in upload. Il campo è definito come UploadableField e richiede due cose: il nome del mapping, ossia il nostro precedente product_image (!importantissimo) e il nome di una proprieta dove mettere il nome del file
Il form che effettua l'upload del file deve inserire nel builder un campo di tipo vich_file o vich_image e il nome di questo campo deve essere imageFile.
in fase di caricamento il bundle crea in automatico le cartell…