Jump to content

¿Como mostrar contenido en un Hook desde una pagina cuyo controlador hereda de FrontController?


josece89

Recommended Posts

Muy buenas a todos,

 

No hace mucho que me puse a desarrollar en prestashop, sobre un par de meses y se me plantea el siguiente problema:

 

Cuando se invoca una pagina del tipo "category.php?id_category=X", es decir que se muestren las subcategorias y productos de una categoria, necesito que parte del contenido que se muestra, se haga en un hook distinto al que por defecto se inserta (comunmente en el div #center_column).

 

Por ejemplo la imagen de la categoria y las subcategorias en el div #center_column (es decir, donde por defecto se muestra el contenido) y los productos en HOOK_MIHOOK. En la imagen que he adjuntado se ve el esquema de lo que explico.

 

He tratado visto que el controlador de "category" hereda lógicamente de FrontController, y ahí estoy un poco atascado.

 

¿Qué soluciones podrían hacerse?

post-341356-0-28741900-1332777132_thumb.png

Link to comment
Share on other sites

Una posible solución que he pensado es "trucar" la salida html con jquery, es decir:

 

Del archivo category.tpl, encuadro la salida de productos con un div y le llamo productscategory:

 

{include file="$tpl_dir./breadcrumb.tpl"}

{include file="$tpl_dir./errors.tpl"}

 

{if isset($category)}

{if $category->id AND $category->active}

 

<h1>

{strip}

{$category->name|escape:'htmlall':'UTF-8'}

{if isset($categoryNameComplement)}

{$categoryNameComplement|escape:'htmlall':'UTF-8'}

{/if}

<span class="category-product-count">

{include file="$tpl_dir./category-count.tpl"}

</span>

{/strip}

</h1>

 

{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')}" 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">{$category->description}</div>

{/if}

{if isset($subcategories)}

<!-- Subcategories -->

<div id="subcategories">

<h3>{l s='Subcategories'}</h3>

<ul class="inline_list">

{foreach from=$subcategories item=subcategory}

<li>

<a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}" title="{$subcategory.name|escape:'htmlall':'UTF-8'}">

{if $subcategory.id_image}

<img src="{$link->getCatImageLink($subcategory.link_rewrite, $subcategory.id_image, 'medium')}" alt="" width="{$mediumSize.width}" height="{$mediumSize.height}" />

{else}

<img src="{$img_cat_dir}default-medium.jpg" alt="" width="{$mediumSize.width}" height="{$mediumSize.height}" />

{/if}

</a><br />

<a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}">{$subcategory.name|escape:'htmlall':'UTF-8'}</a>

</li>

{/foreach}

</ul>

<br class="clear"/>

</div>

{/if}

<div id="productscategory">

{if $products}

{include file="$tpl_dir./product-compare.tpl"}

{include file="$tpl_dir./product-sort.tpl"}

{include file="$tpl_dir./product-list.tpl" products=$products}

{include file="$tpl_dir./product-compare.tpl"}

{include file="$tpl_dir./pagination.tpl"}

{elseif !isset($subcategories)}

<p class="warning">{l s='There are no products in this category.'}</p>

{/if}

</div>

 

{elseif $category->id}

<p class="warning">{l s='This category is currently unavailable.'}</p>

{/if}

{/if}

 

 

Después edito el archivo footer.tpl creo un div donde iria el hook que inicialmente he mencionado, y

 

{if !$content_only}

</div>

 

<!-- Right -->

<div id="right_column" class="column">

<div class="top_left right"></div>

<div class="center_left right"></div>

<div class="bottom_left right"></div>

{$HOOK_RIGHT_COLUMN}

 

</div>

</div>

 

 

<div id="productsdisplay">

 

</div>

 

<script type="text/javascript">

$('#productsdisplay').html($('#productscategory').html());

$('#productscategory').html("");

</script>

 

 

Esto realmente funciona, pero es un apaño que no está mal, pero me gustaría saber si antes de sacar el html, es decir desde la ejecución del controlador de category se puede coger un contenido y mostrarlo por un hook.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...