Cómo usar hooks de plantillas en plugins

Angel Srto

Gamma
Programador
Verificación en dos pasos desactivada
Desde
16 Sep 2010
Mensajes
355
Edad
35
Crédito(s)
0
Puntos
0
Esta no es una guía para principiantes, la he hecho asumiendo que tienen conocimientos de como administrar estilos, editar plantillas, uso de HTML entre otras cosas básicas.

En esta guía voy explicar cómo podemos usar hooks de plantillas añadiendo una pestaña nueva a la barra de navegación, mediante un plugin simple que nos permita agregar la información deseada al hook de plantilla que elijamos.

¿Qué son hooks de plantillas?



Hooks de plantillas son puntos de entrada que permite a addons y plugins agregar modificaciones de plantilla sin necesidad de modificar realmente el código de la plantilla. Estos pueden ser usados mediante plugins utilizando el sistema de productos/plugins que trae vBulletin. También podemos hacer uso de ellos directamente en archivos PHP desde nuestra carpeta foro.

Los hooks, como he mencionado, nos permiten añadir modificaciones sin siquiera tener que editar el código de una plantilla. Esto nos hace el trabajo mucho más fácil a la hora de querer crear un producto que requiere insertar código HTML en un punto concreto de nuestro foro.
Aunque los hooks nos facilitan el trabajo, no siempre vamos a tener un hook en el lugar deseado, y entonces no tenemos otra elección más que modificar la plantilla manualmente o mediante búsqueda y remplazo utilizando funciones de PHP, lo cual no siempre es la mejor solución.


¿Cómo encontrar el hook que deseamos utilizar?


Para poder hacer uso de los hooks, es necesario saber donde están. Para eso tenemos que ir a la plantilla donde deseamos agregar algún elemento, y buscar por la palabra template_hook. Por ejemplo en la plantilla navbar existen 18 hooks al momento de escribir esta guía, los cuales son:

{vb:raw template_hook.navtab_start}
{vb:raw template_hook.navbar_start}
{vb:raw template_hook.navbar_after_getnew}
{vb:raw template_hook.navbar_after_pm}
{vb:raw template_hook.navbar_after_faq}
{vb:raw template_hook.navbar_after_calendar}
{vb:raw template_hook.navbar_community_menu_start}
{vb:raw template_hook.navbar_community_menu_end}
{vb:raw template_hook.navbar_after_community}
{vb:raw template_hook.navbar_quick_links_menu_pos1}
{vb:raw template_hook.navbar_quick_links_menu_pos2}
{vb:raw template_hook.navbar_quick_links_menu_pos3}
{vb:raw template_hook.navbar_quick_links_menu_pos4}
{vb:raw template_hook.navbar_end}
{vb:raw template_hook.navtab_middle}
{vb:raw template_hook.navbar_getnew_menu}
{vb:raw template_hook.navbar_getdaily_menu}
{vb:raw template_hook.navtab_end}

El que he puesto en negrita es el que voy a utilizar en esta guía.




¿Qué es un addon/plugin?


Un addon es lo mismo a lo que comúnmente llamamos producto. Los productos están compuestos de uno o más plugins, plantillas propias, frases de lenguaje propias, configuración propia, variables de estilo propias, y hasta entradas en el sistema de FAQ o ayuda del foro. Los productos son utilizados para poder organizar varios plugins que son creados para un solo propósito en los foros.

Aunque lo recomendable siempre es utilizar un producto para ordenar nuestros plugins, y para poder añadirle opciones, frases entre otras cosas, esto no significa que no podamos usar un plugin sin necesariamente crear un producto. Cabe notar que, el que podamos crear un plugin sin crear un producto para el mismo, no significa que el plugin pueda crearse sin elegir un producto donde incluirlo.
En esta guía voy a explicar como usar un plugin sin tener que crear un producto, el cual estará incluido en el producto vBulletin que es el producto global por defecto.


Haciendo uso de hooks en un plugin.

1 - El primer paso a realizar, para poder tener acceso a opciones de desarrollo, es activar el modo debug. Esto nos permitirá crear plantillas directamente en el estilo primario, crear frases y elegir a que producto relacionarlas, entre otras cosas. En este tutorial no vamos a utilizar mucho esta funcionalidad, pero es bueno tener en cuenta que a la hora de crear un addon o producto es buena idea activar debug.

Para hacerlo, simplemente abrimos el archivo config.php el cual se encuentra en la carpeta includes de nuestro foro, y agregamos la siguiente línea de código en una nueva línea:

PHP:
  $config['misc']['debug'] = true;
Nuestro plugin consistirá en utilizar un hook de la plantilla navbar para agregar una nueva pestaña. Es algo sencillo, por lo cual no va contener más que una simple pestaña enlazada a una página con su título.

Antes de iniciar con nuestro plugin, necesitamos tener a mano el nombre del hook que vamos a utilizar, en mi caso sería el siguiente:
{vb:raw template_hook.navtab_end}

Revisar arriba cómo encontrar hooks para obtener este nombre.


Configuración del plugin:


1. Vayamos al panel de administración, Plugins y Productos. Damos clic en Agregar nuevo plugin.
Ver el archivo adjunto 4719
2. Aquí simplemente dejamos la siguiente configuración:

Producto: vBulletin
Ubicación de enganche: process_templates_complete
Título: cuialquier título que deseemos (Nueva pestaña).
Orden de desplegado: 5
Código PHP de plugin: ver abajo.
Plugin activo: Sí

El código PHP a utilizar sería el siguiente:

PHP:
  $template_hook['navtab_end'] .= '<li><a href="#tab" class="navtab">Pestaña</a></li>';
Le damos a guardar, y al revisar el foro veremos que tenemos una nueva pestaña.

Como pueden ver, los hooks de plantilla se pueden utilizar mediante plugins utilizando la variable correspondiente al hook $template_hook, seguido del nombre del hook $template_hook['navtab_end'] o cualquier otro hook que deseemos.

Algo a notar aquí, es que no usamos el signo igual (=) sólo, sino que agregamos un punto antes del signo lo cual significa que estamos añadiendo contenido al hook, no remplazando el contenido que ya tiene. De esa forma no vamos a interferir en el contenido que otro plugin este añadiendo al mismo hook.



Y este es el resultado.

Ver el archivo adjunto 4720


Conclución:
Este plugin podría mejorarse aún más, bien podríamos crear una plantilla aparte para que contenga nuestro código que será usado para nuestra pestaña, pero ya eso es otro tema el cual explicaré en una nueva guía de como crear un producto donde utilizaremos la mayoría de herramientas de desarrollo que trae el sistema de productos.

Espero haya sido de ayuda esta guía, y cualquier duda háganla saber. Antes de criticar, tengan en cuenta que al mismo tiempo que hago esta guía, también estoy aprendiendo a usar el sistema y probablemente algunas cosas las entienda mal. Si alguien nota cosas erróneas, no duden en hacérmelas saber :)
 

Sukubis

Beta
Verificación en dos pasos desactivada
Desde
3 Ene 2011
Mensajes
51
Edad
51
Crédito(s)
0
Puntos
0
Entiendo muy poco de esto, pero te explicas muy bien :)
 

Eduardo Leon

Baneado
Dseda
Programador
Verificación en dos pasos desactivada
Desde
11 Oct 2009
Mensajes
1.186
Edad
27
Crédito(s)
0
Puntos
574
Excelente, Esto era lo que buscaba ;) !

Gracias xD !
 

Angel Srto

Gamma
Programador
Verificación en dos pasos desactivada
Desde
16 Sep 2010
Mensajes
355
Edad
35
Crédito(s)
0
Puntos
0
Volviéndola a leer me dí cuenta que cometí muchos errores jeje. Eso pasa por no revisar antes de publicar :D
 

Eduardo Leon

Baneado
Dseda
Programador
Verificación en dos pasos desactivada
Desde
11 Oct 2009
Mensajes
1.186
Edad
27
Crédito(s)
0
Puntos
574
hahaha !

xD ! de donde sacaste este tutorial o.o?

Pasa el link o lo creaste tu o.o?
 

Angel Srto

Gamma
Programador
Verificación en dos pasos desactivada
Desde
16 Sep 2010
Mensajes
355
Edad
35
Crédito(s)
0
Puntos
0
Lo redacté yo mismo, es de lo que voy aprendiendo. Estaré haciendo lo mismo con cosas más avanzadas, conforme vaya aprendiendo así otros pueden ir aprendiendo y entendiendo el sistema, y tal vez llegamos a haber más usuarios que se animen a crear algun producto y publicarlo acá en vBHispano.
 

vitin

Curioso
Verificación en dos pasos desactivada
Desde
18 Feb 2011
Mensajes
2
Edad
37
Crédito(s)
0
Puntos
0
Excelente buen trabajo :). Se entendió muy claro y abre las puertas para empezar a armar propios plugins.
 

Arriba