Jump to content

Comment ajouter un HOOK correctement


Recommended Posts

Bonjour à tous,

Je suis sur un problème récurant et j'ai bien passé une journée à chercher.

Bon je suis un débutant alors peut etre que j'ai tourner autour d'un problème qui aurait pu etre résolu en 2mn :rolleyes: .

 

Voilà le problpme et merci pou votre lecture <_< .

 

Je veux utiliser le module de Julien Breu qui consiste à avoir ses categorie horizontalement. Mias je veux/doit les avoir dans un nouveau HOOK.

 

Alors j'ai créé un HOOK et peut etre que mon problème vient de là.

Pour cela, j'ai:

1) Dans ma base de donnée j'ai ajouté une colonne à ma table ps_hook

INSERT INTO `prestashop`.`ps_hook` (
`id_hook` ,
`name` ,
`title` ,
`description` ,
`position` ,
`live_edit`
)
VALUES (
NULL , 'bar', 'Bar', NULL , '1', '0'
);

2) Puis dans mon fichier /Class/FontController.php, j'ai ajouté ceci, juste en dessus de 'HOOK_HEADER' => Module::hookExec('header'),


Line 475 :'HOOK_BAR' => Module::hookExec('bar'),//Ajouté le 29.07.11 pour ajouter un nouveau HOOK topBar

3) Ensuite dans mon fichier /Themes/mon_theme/header.tpl, j'ai ajouté

{HOOK_BAR}

où je souhaiterais avoir mon éléments affiché.

 

A partir de là, mon hook est visiable dans "Module"->"position" et je peux greffé un module la dessus, pour autant que je l'ai authorisé à y a etre greffé.

 

 

Ce qui se passe maintenant, c'est j'ai aussi installé le module de Julien Breux et avant de faire ceci, j'ai modifié le fichier /Modules/jbx_menu/jbx_menu.php et j'ai ajouté cette ligne

line 55: !$this->registerHook('bar') ||

et

public function hookbar($parameters)
{

	global $smarty;	

	if (file_exists(_PS_THEME_DIR_.'modules/jbx_menu/menu_tree.tpl')) {
		$smarty->assign('menu_tpl_tree', _PS_THEME_DIR_ . 'modules/jbx_menu/menu_tree.tpl');
	}
	else {
		$smarty->assign('menu_tpl_tree', _PS_MODULE_DIR_ . 'jbx_menu/menu_tree.tpl');
	}

	echo $menu = $this->display(__FILE__, 'menu.tpl');


	if (Configuration::get('MENU_HOOK') == 'bar') {
		return $menu;
	}
	else {
		$smarty->assign('HOOK_MENU', $menu);	
	}	

}

Pour que e module puisse etre greffé dans mon HOOK_BAR.

 

Pour terminé, et la je ne saus pas si j'ai bien fait, dans le fichier

/Modules/jbx_menu/AdminModuleMenu.php, j'ai ajouté ceci

Line 689:        $this->_html .= $this->_displayInputRadio('Hook to Use ?', 'hook', Configuration::get('MENU_HOOK'), 'Choose the best method to attach your menu to your theme.', array('Top'=>'top','Bar'=>'bar','Menu'=>'menu')); 

au lieux de

Line 689:
       $this->_html .= $this->_displayInputRadio('Hook to Use ?', 'hook', Configuration::get('MENU_HOOK'), 'Choose the best method to attach your menu to your theme.', array('Top'=>'top','Menu'=>'menu'));

 

 

Le problème qui se pose maintenant,est que

1) Quand je greffe, le module jbx_menu dans mon HOOK_BAR, le menu horizontal ne s'affiche pas, dans HOOK_BAR, mais il est bien affiché dans "HOOK_TOP".

2) Si dans la configration de mon menu, sous "Hook to Use", je sélectionne "Bar" au liuex de "Top", le menu horizontal ne s'affiche plus dans HOOK_TOP et non plus dans HOOK_BAR. Ce qui est pas normal car là il devrait s'fficher dans HOOK_BAR.

 

Ce qui me trouble c'eest que si je greffe le bloc categories dans mon HOOK_BAR (apèrs avoir authorisé le greffage de ce bloc dans ce HOOK, le bloc categorie NE S'AFFICHE TOUJOURS PAS!

Et le je me demande bien pourquoi????

 

 

Aussi après avir longtemps chercher j'ai pu constater que dans mon fichier

/Modules/jbx_menu/lbx_menu.php, et dans la noiuvelle fonction (qui est bien chargée)

public function hookbar($parameters)
{

	global $smarty;	

	if (file_exists(_PS_THEME_DIR_.'modules/jbx_menu/menu_tree.tpl')) {
		$smarty->assign('menu_tpl_tree', _PS_THEME_DIR_ . 'modules/jbx_menu/menu_tree.tpl');
	}
	else {
		$smarty->assign('menu_tpl_tree', _PS_MODULE_DIR_ . 'jbx_menu/menu_tree.tpl');
	}

	echo $menu = $this->display(__FILE__, 'menu.tpl');


	if (Configuration::get('MENU_HOOK') == 'bar') {
		return $menu;
	}
	else {
		$smarty->assign('HOOK_MENU', $menu);	
	}	

}

Ce fichier n'est pas "chargé"

$smarty->assign('menu_tpl_tree', _PS_MODULE_DIR_ . 'jbx_menu/menu_tree.tpl');

 

Si je mets

echo 'toto';

à la premiere ligne du fichier /Modules/jbx_menu/menu_tree.tpl, le mot "toto" n'est pas affcher dans ma page, quand je suis en mode "bar" alors qu'il s'affiche quand je suis en mode "top". C'est pourquoi je pense que cette ligne de code

$smarty->assign('menu_tpl_tree', _PS_MODULE_DIR_ . 'jbx_menu/menu_tree.tpl');

 

Est "la source" de mon problème, mais je ne sais abolument pas comment arriver à résoudre mon problème

 

 

Voilà, j'espère que vous avez pris le temps de lire mon explication et que j'ai été claire dans mes explications.

 

Dans tous les cas, votre lecture et aide m'apportera un enorme soutien!!

 

Mille merci à tous

Pierrot

Link to comment
Share on other sites

En fait après réflection je me demande s mon problème vient plus tot de mon fichier

/modules/jbx_menu/menu.tpl.

 

Dans ce fichier il y a ceci:

{if $menu.items|@count > 0}
   {if $menu.hook == 'top'}</div>{/if}
   <!-- MODULE JBX_MENU -->
   <div class="sf-contener">
       <ul class="sf-menu">1
         {foreach from=$menu.items item=item name=menuTree}
             {include file=$menu_tpl_tree}
         {/foreach}
         {if $menu.searchable_active}
         <li class="sf-search noBack" style="float:right">
             <form id="searchbox" action="search.php" method="get">
                 <input type="hidden" value="position" name="orderby" />
                 <input type="hidden" value="desc" name="orderway" />
                 <input type="text" name="search_query" id="search_query_menu" class="search" value="{if isset($smarty.get.search_query)}{$smarty.get.search_query}{/if}" autocomplete="off" />
                 {if $menu.searchable_button}
                     <input type="submit" value="ok" class="search_button" />
                 {/if}
             </form>
         </li>
         {/if}
       </ul>
       <!-- /MODULE JBX_MENU -->
{/if}
{if $menu.hook == 'menu' && $menu.items|@count > 0}</div>{/if}

Et dans la premiere condition

{if $menu.items|@count > 0}

elle n'est pas a true car elle n'est pas plus grande que 0. De plus plus bas il y a ceci

{foreach from=$menu.items item=item name=menuTree}
             {include file=$menu_tpl_tree}
         {/foreach}

 

Donc si la condition est FALSE, le menu_tpl_tree n'est pa chargé.

 

Le problème que j'ai, je ne sais pas ou je peux controler ceci

{if $menu.items|@count > 0}

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