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
Este art=C3=ADculo fue escrito por Julien Breux, y publicado el 5 de mayo de 2011 = en el blog PrestaShop.
=20Como 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.
=20Los "hooks" le permiten recuperar estos eventos o cambiar la muestra.
=20As=C3=AD que existen dos tipos distintos de "hooks".
=20A 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".
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:
=20Nombre del Hook | =20
Decripci=C3=B3n | =20
---|---|
header | =20
Hook del encabezado | =20
top | =20
Hook de la parte superior | =20
leftColumn | =20
Hook de la columna izquierda | =20
home | =20
Hook de la p=C3=A1gina de inicio | =
=20
rightColumn | =20
Hook de la columna derecha | =20
footer | =20
Hook del pie de p=C3=A1gina | =20
Como puede ver, todos los "hooks" utilizados son "hooks de observaci=C3= =B3n".
=20Esto significa que cada uno de sus m=C3=B3dulos de forma independiente p= uede aferrarse a ellos y mostrar la informaci=C3=B3n.
=20En 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".
public function hookNameOfHook($params) { }=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.
=20public function install() { return parent::install() && $this->registerHook('NameOfHook'= ); }=20
No hay necesidad de utilizar el m=C3=A9todo del m=C3=B3dulo "uninstall" = para eliminar el "hook".
Por =C3=BAltimo, es importante entender c=C3=B3mo llamar a estos "hooks"= con el fin de crear otros nuevos m=C3=A1s adelante.
=20Hay dos llamadas en PrestaShop para "hooks". La segunda llamada se basa = en la primera.
=20La 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$params =3D array( 'param_1' =3D> 'value_1', 'param_2' =3D> 'value_2', ); Module::hookExec('NameOfHook', $params);=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".
=20class HookCore extends ObjectModel { // ... static public function updateProduct($product) { $params =3D array('product' =3D> $product); return Module::hookExec('updateProduct', $params); } // ... }=20
Llamar al "hook" denominado "updateProduct" ser=C3=A1 lo siguiente en el= n=C3=BAcleo de PrestaShop.
=20Hook::updateProduct(new Product(/* ... */));=20
Hemos llamado a la clase "HookCore" utilizando "Hook" como el nombre de = la clase. =C2=A1Esto se debe al reemplazo!
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!
=20Para 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)
=20INSERT INTO `ps_hook` (`name`, `title`, `description`) VALUES ('nameOfHook', 'Name Of Hook', 'It is a custom hook != ');=20
=C2=A1Y, por =C3=BAltimo, s=C3=B3lo util=C3=ADcelo como lo hemos hecho e= n este art=C3=ADculo!