Skip to end of metadata
Go to start of metadata

Módulos, Clases y Reemplazo del Controlador

Este artículo fue escrito por Julien Breux y fue publicado por primera vez el 10 de agosto de 2011, en el blog PrestaShop.

Introducción

PrestaShop le permite reemplazar diversos componentes y comportamientos. PrestaShop versión 1.4 consta de dos puntos principales:

  • El primero es reemplazar las partes visibles de los módulos (plantillas, JavaScript y lenguaje de hojas de estilo) para que los temas pueden adaptarse mejor a ellos.
  • El segundo es reemplazar el comportamiento del software (los archivos de clase y los archivos de controlador) para apuntar a una sección específica de los componentes necesarios.

Reemplazo de módulo

Los módulos se encuentran generalmente en el siguiente formato:

  • /modules/my_module/my_module.tpl
  • /modules/my_module/my_module.css
  • /modules/my_module/my_module.js

PrestaShop le permite reemplazar o sustituir ciertos archivos visibles del módulo por otros nuevos con el mismo tema. No podría ser más simple, haga lo siguiente:

  • /themes/prestashop/modules/my_module/my_module.tpl
  • /themes/prestashop/css/modules/my_modules/my_module.css
  • /themes/prestashop/js/modules/my_modules/my_module.js

Los nuevos archivos se utilizarán cuando muestre su sitio web.

Reemplazo de clase

Reemplazar es una forma de "suplantar" los archivos de clase y los archivos de controlador.
La ingeniosa función de auto-carga de clase de PrestaShop, hace el "cambio" a otros archivos bastantes simples.
Use la herencia para modificar y agregar nuevos comportamientos utilizando las diversas propiedades de clases y métodos.

Por lo general se construyen de la siguiente manera (ejemplo de producto):

  • /classes/Product.php
    Esta clase será denominada "ProductCore"
  • /controllers/ProductController.php
    Este controlador será denominado "ProductControllerCore"

Usted tendrá que crear un archivo en la carpeta "override/classes/" para "reemplazar" el modelo de clase resultante, tal como:

  • /override/classes/Product.php

Esta clase será denominada "producto" y se extiende la clase "ProductCore". ¡Sólo un movimiento de la varita mágica PrestaShop y el hechizo está funcionando!

También puede usar este principio con los controladores y el "reemplazo" de la siguiente manera:

  • /override/controllers/ProductController.php

Este controlador será denominado "ProductController" y extiende la clase "ProductControllerCore".

PrestaShop cuenta con ciertas carpetas que puede utilizar para reemplazar elementos tales como mostrar redireccioness (_Tools.php) y medir el tiempo de ejecución del hook (_Module.php) etc.

Ejemplo 1

Utilizando datos de clase MySQL.php es simplemente imposible tratar de introducir datos en una base de datos diferente a PrestaShop en el mismo servidor MySQL. (¡En serio!)

La solución es utilizar el siguiente reemplazo de la clase MySQLCore:

Para utilizarlo, debe crear una instancia de clase de la siguiente manera:

  • For local connection : new MySQL(DB_SERVER, DB_USER, DB_PASSWD, 'DB_name', true);
  • For remote connection : new MySQL(DB_SERVER, DB_USER, DB_PASSWD, 'DB_name', true);

El último parámetro obliga a la creación de una conexión MySQL.

Ejemplo 2

Ejemplo 3

Ejemplo 4

Conclusiones

Los archivos del núcleo no son modificados al reemplazar. Esta técnica le permite personalizar su tienda PrestaShop y monitorear cómo evoluciona el software. Las actualizaciones están facilitadas.

  • No labels