Un módulo está formado por una gran cantidad de archivos, todos almacenados en una carpeta que lleva el mismo nombre que el módulo, y esa carpeta a su vez se almacena en la carpeta / modules en la raíz de la carpeta principal de PrestaShop: / modules / /. Un módulo publicado en un archivo debe estar en una misma subcarpeta.
Estos son los posibles archivos y carpetas para un módulo PrestaShop 1.7:
➜ module tree -L 3
.
├── config
│ ├── services.yml
│ ├── admin
│ │ └── services.yml
│ └── front
│ └── services.yml
├── config.xml
├── controllers
├── logo.png
├── module_name.php
├── override
├── src
│ └── Entity
├── themes
│ └── theme_name
│ └── modules
├── translations
├── upgrade
└── views
├── css
├── img
├── js
└── templates
13 directories, 4 files
Archivo principal: nombre_módulo.php
El archivo principal PHP debe tener el mismo nombre que la carpeta raíz del módulo. Por ejemplo, para el módulo BlockCMS:
Nombre de la carpeta: /módulos/blockcms
Nombre del archivo principal: /módulos/blockcms/blockcms.php
Archivos de iconos: logo.png && logo.gif
Esto tiene que ser un archivo PNG de 32*32 píxeles.
Plantilla: la carpeta de vistas
Esta carpeta contiene los archivos de plantilla de su módulo (archivos .tpl o .html.twig).
Dependiendo de sus necesidades, sus archivos se encuentran en diferentes subcarpetas:
/views/templates/admin: Para los archivos de plantilla utilizados por los controladores de legado de la administración del módulo.
/views/templates/front: Para los archivos de plantilla utilizados por los controladores del front office del módulo.
/views/templates/hook: Para los archivos de plantilla usados por los ganchos del módulo.
Si desea anular un archivo de plantilla de Twig desde el Back Office, declare el suyo propio siguiendo la misma ruta en la subcarpeta /views/PrestaShop. Por ejemplo, si desea anular la plantilla product.html.twig ubicada en Admin/Product/ProductPage, cree su propio archivo en /views/PrestaShop/Admin/Product/ProductPage/product.html.twig.
Todos los activos que necesite utilizar en el módulo (css, js o archivos de imagen) deben estar ubicados en sus carpetas: /views/{js, css, img, fuentes}.
Hacer acciones y páginas: la carpeta de controladores
Esta carpeta contiene los archivos del Controlador. Puede utilizar las mismas rutas de subcarpeta que para los archivos de la Vista. También se pueden añadir formularios con el helper de Prestashop.
Por ejemplo, /modules//controllers/front/payment.php es una ruta válida para compartir una acción con su Front Office.
Anular las clases del núcleo de PrestaShop: la carpeta de anulación
Intenta evitar la anulación de las clases de Core, esto hace que la actualización de tu aplicación sea arriesgada.
Necesitas seguir el mismo camino que la aplicación PrestaShop en tu módulo. Por ejemplo:
Clase de tienda
Clase PrestaShop => clases/tienda/tienda.php
Module override => modules/<module_name>/override/classes/shop/Shop.php
Si /modules//override/classes/Shop.php existe en tu módulo y no es anulado por ningún otro módulo más tarde, esta clase se utilizará en lugar de la clase nativa ShopCore en todas partes de tu aplicación.
Traduzca sus cadenas: la carpeta de traducciones
Esta carpeta contiene un archivo php para cada localidad: fr.php, es.php. La traducción de su módulo se puede hacer en el panel de administración de su tienda, en Internacional > Traducciones > Traducciones de módulos instalados.
Adaptar el comportamiento de otros módulos: la carpeta themes//modules
Esta carpeta es esencial durante las modificaciones de un módulo existente, para poder adaptarlo sin tener que tocar sus archivos originales. En particular, le permite manejar los archivos de plantilla del módulo de varias maneras, dependiendo del tema actual.
Gestionar la actualización: la carpeta de actualización
Cuando se lanza una nueva versión del módulo, la más antigua puede necesitar una actualización de sus datos o archivos. Esto se puede hacer usando esta carpeta.
Archivo de configuración: services.yml
En el archivo services.yml, puedes registrar tus propias clases como un servicio Symfony y alterar las proporcionadas por PrestaShop.
Archivo de caché: config.xml
Si no existe todavía, el archivo config.xml es generado automáticamente por PrestaShop cuando se instala el módulo.
Contiene algunas propiedades de la clase principal del módulo y optimiza la carga de la lista de módulos en el back office.
También puedes aprender mucho sobre los hooks de prestashop