Message-ID: <1041899895.378908.1711679604599.JavaMail.root@confluence-doc2-production> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_378907_456431499.1711679604594" ------=_Part_378907_456431499.1711679604594 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html Comprensi=C3=B3n y uso de hooks

Comprensi=C3=B3n y uso de hooks

= Comprensi=C3=B3n y uso de hooks

=20

Este art=C3=ADculo fue escrito por Julien Breux, y publicado el 5 de mayo de 2011 = en el blog PrestaShop.

=20

=C2=BFQu=C3=A9 es un =E2=80=9Chook=E2=80=9D?

=20

Como se habr=C3=A1 dado cuenta, PrestaShop es un software que le permite= crear m=C3=B3dulos dise=C3=B1ados para interactuar directamente con el cor= az=C3=B3n de la muestra de soluci=C3=B3nes o eventos.

=20

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

As=C3=AD que existen dos tipos distintos de "hooks".

=20 =20

A veces el "hook" de observaci=C3=B3n tambi=C3=A9n puede servir como un = "hook" de acci=C3=B3n. Usted no necesita hacer nada para mostrarlos. Por ej= emplo, usted puede hacer una tarea recurrente en la p=C3=A1gina de inicio c= on el "hook" "home".

=20

Si tomamos el ejemplo del tema b=C3=A1sico de PrestaShop, en la p=C3=A1g= ina principal, la soluci=C3=B3n utiliza "puntos de fijaci=C3=B3n" de la sig= uiente manera:

=20
=20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 = =20 =20 =20 =20 =20 =20 =20 =20 =20 =20

Nombre del Hook

Decripci=C3=B3n

header

Hook del encabezado

top

Hook de la parte superior

leftColumn

Hook de la columna izquierda

home

Hook de la p=C3=A1gina de inicio

rightColumn

Hook de la columna derecha

footer

Hook del pie de p=C3=A1gina

=20

Como puede ver, todos los "hooks" utilizados son "hooks de observaci=C3= =B3n".

=20

Esto significa que cada uno de sus m=C3=B3dulos de forma independiente p= uede aferrarse a ellos y mostrar la informaci=C3=B3n.

=20

=C2=BFC= =C3=B3mo se utilizan?

=20

En primer lugar, para usar correctamente el "hook", usted debe dirijirse= a la clase de su m=C3=B3dulo y crear un m=C3=A9todo no est=C3=A1tico, p=C3= =BAblico a partir de la palabra "hook" y el nombre del "hook" utilizado. Entonces, s=C3=B3lo un argumento es pasado: la matriz de informaci=C3=B3n= de contexto diferente enviado al "hook".

=20
=20
public function hookNameOfHook($params)
{
}
=20
=20

A continuaci=C3=B3n, es importante a la hora de instalar el m=C3=B3dulo,= adherirlo a varios "hooks" deseados . Para ello, utilice el m=C3=A9todo "r= egisterHook", el cual s=C3=B3lo acepta un par=C3=A1metro =E2=80=94 el nombr= e del hook.

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

No hay necesidad de utilizar el m=C3=A9todo del m=C3=B3dulo "uninstall" = para eliminar el "hook".

=20

Por =C3=BAltimo, es importante entender c=C3=B3mo llamar a estos "hooks"= con el fin de crear otros nuevos m=C3=A1s adelante.

=20

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

=20

La primera llamada es el m=C3=A9todo directo. Tiene dos argumentos: el n= ombre del "hook" y una matriz de informaci=C3=B3n de contexto diferente.=20

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

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

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

Llamar al "hook" denominado "updateProduct" ser=C3=A1 lo siguiente en el= n=C3=BAcleo de PrestaShop.

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

Hemos llamado a la clase "HookCore" utilizando "Hook" como el nombre de = la clase. =C2=A1Esto se debe al reemplazo!

=20

=C2= =BFC=C3=B3mo agregar uno nuevo?

=20

Si hasta ahora ha seguido el uso de "hooks" y c=C3=B3mo usarlos en Prest= aShop, entonces usted seguramente se ha dado cuenta que le faltan algunos "= hooks" como "MakeCoffe", "MakeFood" o "RespondToClientsForMe". =C2=A1No ent= re en p=C3=A1nico!

=20

Para crear su propio y peque=C3=B1o "hook" personal, simplemente guarde = una fila en la tabla de la base de datos "ps_hook" con el nombre de su "hoo= k". (Vea 0 y 1 si es compatible con LiveEdit)

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

=C2=A1Y, por =C3=BAltimo, s=C3=B3lo util=C3=ADcelo como lo hemos hecho e= n este art=C3=ADculo!

------=_Part_378907_456431499.1711679604594--