Child pages
  • Comprensión y uso de hooks
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Comprensión y uso de hooks

Este artículo fue escrito por Julien Breux, y publicado el 5 de mayo de 2011 en el blog PrestaShop.

¿Qué es un “hook”?

Como se habrá dado cuenta, PrestaShop es un software le permite crear módulos diseñados para interactuar directamente con el corazón de la muestra de soluciónes o eventos.

Los "hooks" le permiten recuperar estos eventos o cambiar la muestra.

Así que existen dos tipos distintos de "hooks".

  • "Hooks" de acción (los que le permiten, por ejemplo, enviar un e-mail cuando un cliente crea una cuenta de usuario)
  • "Hooks" de observación (los que le permiten, por ejemplo, mostrar un módulo en una columna)

A veces el "hook" de observación también puede servir como un "hook" de acción. Usted no necesita hacer nada para mostrarlas. Por ejemplo, usted puede hacer una tarea recurrente en la página de inicio con el "hook" "home".

Si tomamos el ejemplo del tema básico de PrestaShop, en la página principal, la solución utiliza "puntos de fijación" de la siguiente manera:

Hook name

header

top

leftColumn

home

rightColumn

footer

Como puede ver, todos los "hooks" utilizados son "hooks de observación".

Esto significa que cada uno de sus módulos de forma independiente puede aferrarse a ellos y mostrar la información.

¿Cómo se utilizan?

En primer lugar, para usar correctamente el "hook", usted debe dirijirse a la clase de su módulo y crear un método no estático,público a partir de la palabra "hook" y el nombre del "hook" utilizado.
Entonces, sólo un solo argumento es pasado: la matriz de información de contexto diferente enviado al "hook".

public function hookNameOfHook($params)
{
}

A continuación, es importante a la hora de instalar el módulo, adherirlo a varios "hooks" deseados . Para ello, utilice el método "registerHook", el cual sólo acepta un parámetro — el nombre del hook.

public function install()
{
    return parent::install() && $this->registerHook('NameOfHook');
}

TNo hay necesidad de utilizar el método del módulo "uninstall" para eliminar el "hook".

Por último, es importante entender cómo llamar a estos "hooks" con el fin de crear otros nuevos más adelante.

Hay dos llamadas en PrestaShop para "hooks". La segunda llamada se basa en la primera.

La primera llamada es el método directo. Tiene dos argumentos: el nombre del "hook" y una matriz de información de contexto diferente.

$params = array(
    'param_1' => 'value_1',
    'param_2' => 'value_2',
);
Module::hookExec('NameOfHook', $params);

La segunda llamada es un "acceso directo" a la primera para obtener una muestra "limpia" cuando realice la llamada. El conjunto de "accesos directos" están disponibles en la clase de "hook".

class HookCore extends ObjectModel
{
    // ...
    static public function updateProduct($product)
    {
        $params = array('product' => $product);
        return Module::hookExec('updateProduct', $params);
    }
    // ...
}

Llamar al "hook" denominado "updateProduct" será lo siguiente en el corazón de PrestaShop.

Hook::updateProduct(new Product(/* ... */));

Hemos llamado a la clase "HookCore" utilizando "Hook" como el nombre de la clase. ¡Esto se debe a la anulación!

¿Cómo agregar uno nuevo?

Si hasta ahora ha seguido el uso de "hooks" y cómo usarlos en PrestaShop, entonces usted seguramente se ha dado cuenta que le faltan algunos "hooks" como "MakeCoffe", "MakeFood" o "RespondToClientsForMe". ¡No entre en pánico!

Para crear su propio y pequeño "hook" personal, simplemente guarde una fila en el cuadro de la base de datos "ps_hook" con el nombre de su "hook". (Vea 0 y 1 si es compatible con LiveEdit)

INSERT INTO `ps_hook` (`name`, `title`, `description`)
               VALUES ('nameOfHook', 'Name Of Hook', 'It is a custom hook !');

¡Y, por último, sólo utilícelo como lo hemos hecho en este artículo!

  • No labels