Jump to content

(Débutant)Récupérer Le Nom De La Catégorie Principale Dans Le Bloc Catégorie


Recommended Posts

Bonjour,

d'avance merci de votre aide je suis sur prestashop 1.5.2.

Alors voilà, étant débutante, j'ai bricolé à partir de plusieurs poste afin de modifié mon bloc catégorie (menu de gauche) dans le but de n'afficher que les sous-catégories de la catégorie principale (menu horizontal).

 

Super! Cela marche à peu près tant qu'il n'y a pas plus de 2 niveaux. Voici le code récupéré sur un poste intégré dans mon fichier catégorie-tree-branche.tpl copié et remplacer à partir de la ligne 25 si cela peut servir à quelqu'un :

{assign var="show_child" value="false"}

{if isset($currentCategoryId) && ($node.id == $currentCategoryId)}
		    {assign var="show_child" value="true"}
{/if}
{if $node.children|@count > 0}
		    {foreach from=$node.children item=child name=categoryTreeBranch}
						    {if isset($currentCategoryId) && ($child.id == $currentCategoryId)}
										    {assign var="show_child" value="true"}
						    {/if}
		    {/foreach}
{/if}
{if $show_child == 'true'}
		    {if $node.children|@count > 0}
						    {foreach from=$node.children item=child name=categoryTreeBranch}
										    {if isset($smarty.foreach.categoryTreeBranch) && $smarty.foreach.categoryTreeBranch.last}
														    {include file="$branche_tpl_path" node=$child show='true' last='true'}
										    {else}
														    {include file="$branche_tpl_path" node=$child show='true' last='false'}
										    {/if}

						    {/foreach}
		    {/if}

{/if}
{if isset($show)}
<li {if isset($last) && $last == 'true'}class="last"{/if}> <a href="{$node.link|escape:'htmlall':'UTF-8'}" {if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if} title="{$node.desc|escape:'htmlall':'UTF-8'}">{$node.name|escape:'htmlall':'UTF-8'}</a> {if $node.children|@count > 0}
 <ul>
{foreach from=$node.children item=child name=categoryTreeBranch}
  {if $smarty.foreach.categoryTreeBranch.last}
   {include file="$branche_tpl_path" node=$child last='true'}

  {else}
   {include file="$branche_tpl_path" node=$child last='false'}
  {/if}

 {/foreach}

 </ul>
 {/if} </li>

 {/if}

 

Mais, j'ai un souci par rapport au titre du bloc. je souhaites récupérer le titre du bloc et l'affiché à la place du titre par défaut.

 

j'ai donc suivi ce poste :

http://www.prestashop.com/forums/topic/191764-afficher-la-category-parent-dans-la-page-category/

 

dans mon fichier CategoryController.php dossier Overrride j'ai intégré cette fonction dans la fonction class categorycontroller :

public function process()
{
 global $cookie;
 $parent = new Category(Tools::getValue('id_category'), intval($cookie->id_lang));
  $parentID = new Category(Tools::getValue('id_category'), intval($cookie->id_lang));
 $listing=$parent->getParentsCategories($cookie->id_lang);
 foreach ($listing as $list)
  {
   if($list['level_depth']==2)
	 {
	  self::$smarty->assign('parent',$list['name']);
 self::$smarty->assign('parentID',$list['id_category']);
	  break;
	 }
  }
}

 

j'ai donc $parent pour récupérer le nom et $parentID pour récupérer l'ID pour faire une feuille de style css différent selon la catégorie

 

dans mon fichier blockcategories.tpl module bloc categories je remplace :

<!--<h4 class="title_block">{l s='Categories' mod='blockcategories'}</h4> -->

par

<h4 class="title_block"><a href="{$base_dir}category.php?id_category={$parentID}" {if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if} title="{$node.desc|escape:'htmlall':'UTF-8'}">{$parent}</a> </h4>

 

{$parent} me permet d'afficher le nom de la catégorie principale. Mais, il y a toujours un MAIS, tout fonctionne à merveille sauf quand je suis sur la page d'un produit. Je comprend pas pourquoi la valeur de la variable {$parent} dans le bloc Catégorie ne s'affiche plus idem pour $parentID comme si je ne l'avais pas déclarer au bon endroit. Quelqu'un aurait il une petite idée ? j'ai bien essayé de changer la profondeur dans if($list['level_depth']==2) mais ça fontionne pas. Il n'y a que le titre qui disparait.

merci beaucoup

Link to comment
Share on other sites

Bon, je me répond à moi même...

j'ai finalement utilisé une autre solution, mais elle reste peu flexible:

j'ai donc récupéré l'ID de la catégorie en cours par {$currentCategoryId} dans mon ficher blockcategorie.tpl.

Ansuite j'affiche le titre en fonction des ID de menu principal et sous catégorie exemple :

{if $currentCategoryId==10 OR $currentCategoryId==25 OR $currentCategoryId==23  OR $currentCategoryId==9 OR $currentCategoryId==24  OR $currentCategoryId==26 }<h4 class="title_block"><a href="{$base_dir}category.php?id_category=9" {if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if} title="{$node.desc|escape:'htmlall':'UTF-8'}">MON TITRE</a> <link href="{$base_dir}themes/default/css/MAFEUILLEDESTYLE.css"  rel="stylesheet" type="text/css" media="{$media}" /></h4>{/if}

auquel je lie une feuille de style.

Pour ma part cela fonctionne. Par contre lorsque je clique sur un produit à partir de ma page d'accueil (bloc produit phare) le bloccatégorie semble etre en display none sur la page produit. Il ne s'affiche pas, mais si je renouvelle la manip cette fois il s'affiche. Comme si, dans un premier temps, aucune catégorie n'aurai été attribué. Peut-être une histoire de cookie ou autre. A partir de mon menu horizontale, il n'y a pas de soucis. Je sais pas si je suis clair. J'espère qu'une âme charitable passera par là et pourra au moins me conseillé.

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...