PrestaShop, con su potente y flexible marco de trabajo, permite a los desarrolladores personalizar diversos aspectos de la plataforma para satisfacer requisitos comerciales específicos. Una de esas personalizaciones es agregar una pestaña personalizada en la página de producto del back office. En este blog, repasaremos el proceso paso a paso para lograrlo mediante la creación de un módulo de muestra llamado kbcustommodule.
Podemos crear la pestaña personalizada en la página de producto del back office de dos maneras:
- Usando componentes Symfony.
- Uso del gancho displayAdminProductsExtra
Método 1:
Este tutorial es aplicable a la versión 8.1 y superiores de PrestaShop, que utilizan componentes Symfony.
Paso 1: Crea tu módulo
kbcustommodule/ |– composer.json |– config/ | |– services.yml |– src/ | |– Form/ | | |– Modifier/ | | | |– ProductFormModifier.php | | |– Type/ | | | |– CustomTabType.php |– kbcustommodule.php Comienza creando una carpeta llamada kbcustommodule en el directorio modules de tu instalación de PrestaShop. Dentro de esta carpeta, crea el archivo kbcustommodule.php, que contendrá la clase principal de tu módulo. La clase module inicializa el módulo y registra los ganchos necesarios. Aquí hay un ejemplo del archivo kdcustommodule.php:
Ejecute el comando composer dump-autoload en el directorio raíz de su módulo para habilitar la carga automática de espacios de nombres.
Paso 2: Definir los servicios
Crea un archivo services.yml en el directorio de configuración de tu módulo (kbcustommodule/config/services.yml). Este archivo define los servicios de Symfony necesarios para la personalización de formularios.
Paso 3: Crear el tipo de formulario de pestaña personalizada
Cree una clase CustomTabType en la carpeta src/Form/Type de su módulo. Esta clase define los campos que aparecerán en la pestaña personalizada.
Paso 4: Crear la clase ProductFormModifier
La clase ProductFormModifier define cómo la pestaña personalizada se integra con el formulario de producto existente.
Paso final: instalar y probar
- Instale el módulo a través del back office o colóquelo manualmente en el directorio de módulos y habilítelo.
- Vaya a la página del producto de la oficina administrativa. Debería ver una nueva pestaña denominada “Pestaña personalizada” con un campo denominado “Campo personalizado”.
- Pruebe la funcionalidad agregando datos al campo personalizado y asegurándose de que se guarde correctamente.
Después de instalar correctamente el módulo anterior, obtendrá el siguiente resultado.
Integrar Google Tag Manager con Prestashop
Método 2:
El gancho displayAdminProductsExtra permite agregar contenido personalizado o pestañas a la página de edición de productos en el back office. Este método evita la complejidad de definir servicios de Symfony y es más fácil para los desarrolladores que no están familiarizados con Symfony.
Paso 1: Crear el módulo
Comience por crear una estructura básica de módulo. Por ejemplo: Kbcustommodule/ |– config/ |– translates/ |– views/ | |– templates/ | |– admin/ | |– products/ | |– custom_tab.tpl |– Kbcustommodule.php
Paso 2: Definir la clase del módulo
En el archivo Kbcustommodule.php, defina su módulo y registre el gancho displayAdminProductsExtra.
Paso 3: Crear el archivo de plantilla
En el archivo views/templates/admin/products/custom_tab.tpl, defina el HTML y el contenido para su pestaña personalizada.
Paso 4: guarde los datos
Para guardar los datos personalizados, utilice el gancho actionAdminControllerSetMedia junto con JavaScript o PHP. Como alternativa, puede utilizar el gancho actionProductUpdate en PHP. Ejemplo en Kbcustommodule.php:
Paso 5: Agregar el campo a la base de datos
Modifique la base de datos para almacenar sus datos personalizados. Por ejemplo: ———————————————————————— ALTER TABLE ps_product ADD custom_field TEXT NULL; ———————————————————————— Después de instalar correctamente el módulo anterior, obtendrá el siguiente resultado. Para obtener más ayuda, no dude en comunicarse con nosotros o dejar un comentario a continuación. O también puede comunicarse con nosotros en Servicio de asistencia técnica de Knowband.
