Crear un módulo para Prestashop
Prestashop se basa en el modelo MVC (Modelo, Vista, Controlador) para gestionar la información.Modelo-> Son todos los objetos que extienden la clase base “ObjectModel”, que define las funciones y comportamiento estándar para gestionar las tablas de prestashop y la base para el soporte multilenguaje.
Vista-> Implementada mediante las plantillas de Smarty, que se encargan de gestionar la presentación de datos en pantalla.
Controlador-> Son las clases que se encargan de la gestion del flujo de datos, recuperan los datos del modelo y los envían a la vista. Se encuentran en el directorio base de la aplicación y se corresponden con las páginas principales del proyecto.
Dado que cualquier cambio en esta arquitectura sería elevadamente difícil de controlar y actualizar con las diferentes nuevas versiones del producto, la solución se encuentra en crear módulos, que utilizan las funciones y recursos del núcleo de la aplicación sin interferir en ella.
El objetivo de este artículo es proporcionar una forma sencilla de crear nuevos módulos para la solución de comercio electrónico Prestashop mediante la creación de un “patrón de diseño” para la estructura de un módulo.
Prestashop tiene la capacidad de incorporar nuevos módulos a los ya existentes.
La organización de Prestashop permite modificar tanto la parte visible (Front end) como la parte de administración (Back office).
Dentro de la estructura de directorio del proyecto Prestashop, la parte que nos interesa es el directorio “modules”. En este directorio tenemos todos los módulos que tiene incorporados nuestra tienda.
Estos módulos se dividen en varios tipos de módulos, hay módulos ‘ block ‘ que representan en sí mismos un tipo de objeto utilizable y también hay módulos más “Genéricos”.
Todos los módulos están organizados de la misma manera, haciendo así más sencillo crear un nuevo módulo. Se podría hablar de un “patrón” de los módulos Prestashop. Y este es relativamente simple.
Todo módulo incluye como mínimo un archivo <nombreMódulo>.php y otro
<nombreMódulo>.tpl. Con estos dos archivos es suficiente para crear un nuevo módulo.
En el directorio de un módulo, se podría también observar la presencia de un archivo logo.gif que va a ser el icono que se muestre en la tabla de módulos de administración (Back office).
Encontramos también otros archivos (script php) representados con abreviaturas de códigos de países representando los idiomas o traducciones del módulo:
es:Español
en:Inglés
fr.:Francés
d:Alemán
nl:Holandés
..
Estos archivos de idiomas, para ser utilizados en las traducciones, deben encontrarse en el directorio raíz del módulo. Prestashop no los encontrará si se encuentran por ejemplo en los subdirectorios.
A nivel práctico, lo mejor es construir su módulo con un idioma de “referencia” y a través del Back office utilizar la herramienta de “traducción” para editar otros idiomas y guardar sus expresiones traducidas.
En las plantillas, la sintaxis de la llamada es un poco diferente a las expresiones generales:
{l s = 'la expresión' mod = 'Unmodule'}
Si no se pone el atributo mod, la expresión no se traducirá correctamente.Como vamos a construir el código general de nuestro módulo?
Nuestra clase módulo va a heredar de la clase Module (prestashop/clases/Module.php) y, por tanto, ya tendrá unas pocas propiedades y métodos desde el principio.Vamos a mostrar un código básico para un nuevo módulo:
<?php
class UnModule extends Module {
public function __construct() {
$this->name = 'unmodule';
$this->tab = 'front_office_features';
$this->version = 1.0;
$this->author = 'Jose Aguilar';
parent::__construct();
$this->page = basename(__FILE__, '.php');
$this->displayName = $this->l('Titulo del modulo');
$this->description = $this->l('Descripcion del modulo');
}
public function install() {
if(parent::install() == false)
return false;
return true;
}
}
?>
Como vemos, para crear módulos va a ser imprescindible que tengamos conocimientos en programación orientada a objetos ya que vamos a tener que trabajar con clases.Para acceder a la configuración del módulo, se debe añadir el siguiente método a nuestro módulo:
public function getContent () {
// Instruciones …
}
Este poco código, añade en el Back office un enlace hacia la página de configuración asociada.Si se sigue el enlace “Configuración >>” que aparece en el módulo, la página destino estará vacía de momento.
Con este poco código ya conseguimos que en la administración tengamos disponible nuestro módulo.
Para que un módulo se “añada” a una parte de “Front office” deberá referirse a un “gancho” (Hook) que debe existir en la tabla Prestashop del mismo nombre.
Las tablas de Hook presentes en Prestashop son:
1. payment
2. newOrder
3. paymentConfirm
4. paymentReturn
5. updateQuantity
6. rightColumn
7. leftColumn
8. home
9. header
10. cart
11. authentication
12. addproduct
13. updateproduct
14. top
15. extra
16. deleteproduct
17. productfooter
18. invoice
19. updateOrderStatus
20. adminOrder
21. footer
22. PDFInvoice
23. adminCustomers
24. orderConfirmation
25. createAccount
26. customerAccount
27. orderSlip
28. productTab
29. productTabContent
30. shoppingCart
Podríamos añadir la siguiente función a nuestro módulo:
function hookDisplayLeftColumn($params) {
return $this->display(__FILE__, 'unmodule.tpl');
}
function hookDisplayRightColumn($params) {
return $this->hookDisplayLeftColumn($params);
}
Uno de los puntos más importante es la “llamada”, de nuestro módulo a ciertas partes del Front office (en el caso de ser necesario obviamente).Para hacer un módulo visible en la parte front office, debemos instalar el nuevo módulo y posicionarlo dentro del hook que deseemos siempre teniendo en cuenta que en el caso de este ejemplo solo hemos añadido 2 funciones: “hookRightColumn” y “hookLeftColumn”, por tanto, este módulo solo podrá posicionarse en una de las 2 columnas de la tienda.
Ahora deberíamos crear un archivo .tpl para mostrar nuestro módulo en el front office. Por norma, el archivo debe contener el mismo nombre que el archivo php pero podríamos llamarle de cualquier forma, mientras hagamos la llamada correcta dentro del archivo .php.
El archivo “unmodule.tpl” contendrá el código HTML que se visualizará en el Front office.
Para añadir estilos o código CSS a un módulo deberemos añadir la siguiente función al módulo:
public function hookDisplayHeader($params) {
$this->context->controller->addCSS($this->_path.'css/unmodule.css', 'all');
}
Crea un directorio css en el directorio de tu módulo y añadir un archivo .css con los estilos que utilizará el módulo.Y ahora solo faltan ideas para crear nuevas funcionalidades.
0 comentarios:
Publicar un comentario