Jump to content

Duda sobre módulos, hooks y bloques de templates


Recommended Posts

Tengo una duda a la hora de mostrar las vistas desde un módulo anclado en un hook determinado:

Resulta que los hooks de display, como normalmente van en las plantillas del tema, a veces no están situados exactamente donde queremos mostrar la vista de un módulo.

Me explico mejor con un ejemplo: Esta es la template (simplificada) de catalog/listing/product-list.tpl:

{block name='content'}
  <section id="main">

    {block name='product_list_header'}
      <h2 class="h2">{$listing.label}</h2>
    {/block}
    
    <section id="products">
      [....]
    </section>
    
    {hook h="displayFooterCategory"}
    
  </section>
{/block}

El único hook que puedo usar en este caso es "displayFooterCategory", pero si yo quiero mostrar algo ANTES de los productos en vez de después, que es donde está situado el hook.... ¿sería posible usar los bloques de la plantilla para ello, o estoy diciendo una tontería?

Es decir, en la vista de mi módulo (que estaría anclado en el hook dispplayFooterCategory), poner algo como esto:

{block name='product_list_header' append}
	<p>Contenido a mostrar antes de los productos</p>
{/block}

Lo he probado, pero no funciona. Muestra el contenido donde está el hook (al final), y no donde iría el bloque (al principio), pero no sé si se puede hacer de algún modo. O si a alguien se le ocurre la forma de mover el contenido a otro sitio diferente de donde está colocado el hook.

Aclaro que lo de modificar la template para añadir un hook personalizado o una llamada al módulo como widget no es una opción en este caso, pues pretendo hacer algo que no requiera tener que modificar las plantillas del tema manualmente.

Edited by Prestafan33 (see edit history)
Link to comment
Share on other sites

4 minutes ago, ventura said:

En determinados casos lo mejor, o al menos lo más practico, es mover el contenido con js

Gracias por la respuesta, @ventura

¿Aparte de la solución JavaScript, no hay entonces un método "previsto" en las vistas para mostrar el contenido en otra posición distinta de aquella desde la que se ejecuta el hook en la plantilla?

Link to comment
Share on other sites

Buenas,

Yo tengo entendido que debes cargar otra plantilla poniendo en primera linea

{extends file='catalog/listing/product-list.tpl'}


y entonces dentro de ese fichero podrías hacer override de cualquiera de los bloques

{block name='product_list_header' append} <p>Contenido a mostrar antes de los productos</p> {/block}

Pero debes asegurarte por el controlador (haciendo un override) que se carga el nuevo fichero del plugin y no el del tema.

Salut!

Link to comment
Share on other sites

Gracias, Adrián por la respuesta.

La verdad es que esa opción ya la intenté y me daba error, pero claro, no había hecho lo que comentas al final de hacer un override del controlador para que cargue la vista desde el módulo. Voy a hacer alguna prueba, aunque tampoco me gusta demasiado tener que hacer override de los controladores, más que nada por el conflicto que puede suponer si ya se tienen en uso otros módulos que también hagan override de los mismos controladores.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...