Crear un nuevo hook en Prestashop 1.5

Crear un nuevo hook en Prestashop 1.5, es mucho más sencillo de lo que se puede imaginar.

Por ejemplo, vamos a coger el módulo llamado “Bloque de Publicidad”, y crear un nuevo hook, que luego vamos a colocar en el listado de productos de tu tienda Prestashop bajo la versión 1.5.

Editamos el fichero:

/modules/blockadvertising/blockadvertising.php

Y buscamos, por ejemplo, el siguiente código:

return (parent::install() && $this->registerHook('leftColumn'));

En este caso, ese código lo dejamos así:

return (parent::install() && $this->registerHook('leftColumn') && $this->registerHook('FirvelEjemplo'));

Si nos fijamos, hemos añadido la siguiente línea:

&& $this->registerHook('FirvelEjemplo')

De esta manera el módulo, se instalará en la hook “leftColumn” que viene a ser la columna izquierda y además automáticamente creara un nuevo hook llamado “FirvelEjemplo“, que nosotros podremos usar en cualquier parte de la tienda, tal como vamos a mostrar en este mismo artículo.

Ahora en el mismo fichero:

/modules/blockadvertising/blockadvertising.php

Vamos añadir la siguiente función:

public function hookFirvelEjemplo($params) {
	return $this->hookLeftColumn($params);
}

En esta función, indicamos que el contenido que se muestra en la columna izquierda, se muestre también en el nuevo hook llamado “FirvelEjemplo“.

Luego en el fichero, donde queramos que se muestre el contenido del nuevo hook, añadimos lo siguiente:

{hook h='FirvelEjemplo'}

En este caso, por ejemplo, hemos indicado que se muestre justo debajo del bloque donde se muestra la imagen y descripción de la categoría, editando el fichero:

/themes/tu-plantilla/category.tpl

Añadiendo esto:

{hook h='FirvelEjemplo'}

Debajo de:

{if $scenes || $category->description || $category->id_image}
		<div class="content_scene_cat">
			{if $scenes}
				<!-- Scenes -->
				{include file="$tpl_dir./scenes.tpl" scenes=$scenes}
			{else}
				<!-- Category image -->
				{if $category->id_image}
				<div class="align_center">
					<img src="{$link->getCatImageLink($category->link_rewrite, $category->id_image, 'category_default')|escape:'html'}" alt="{$category->name|escape:'htmlall':'UTF-8'}" title="{$category->name|escape:'htmlall':'UTF-8'}" id="categoryImage" width="{$categorySize.width}" height="{$categorySize.height}" />
				</div>
				{/if}
			{/if}
			{if $category->description}
				<div class="cat_desc">
				{if strlen($category->description) > 120}
					<p id="category_description_short">{$category->description|truncate:120}</p>
					<p id="category_description_full" style="display:none">{$category->description}</p>
					<a href="#" onclick="$('#category_description_short').hide(); $('#category_description_full').show(); $(this).hide(); return false;" class="lnk_more">{l s='More'}</a>
				{else}
					<p>{$category->description}</p>
				{/if}
				</div>
			{/if}
		</div>
		{/if}

El resultado final, en este caso será el siguiente:

mop

Esta guía, ha sido probada en Prestashop 1.5.4.1