Jump to content

Modifier les $HOOK


Recommended Posts

Bonjour tout le monde !

Voilà, je travail actuellement sur le design de ma boutique.
Seulement je rencontre un souci qui freine mon développement, bien que j'ai chercher à le résoudre je n'y suis pas parvenus.

Je recherche la zone qui contiens les éléments HOOK, comme par exemple dans le header.tpl du thème principal l'élément suivant:
{$HOOK_TOP}

Ce qui me permettrait par exemple de le modifier pour en faire un de ce genre: {$HOOK_RECHERCHE} et ainsi mettre l'input de recherche ailleurs sur mon design.
Car si je change l'emplacement de HOOK_TOP et bien il y a le favoris, le drapeau et les devises qui suivent alors que je veux eux aussi les mettres ailleurs.

Comment modifier ces zones là et si possible comment créer un HOOK personnalisé.
Je veux que mon input de recherche soit séparer des autres éléments inclus dans le HOOK_TOP.

Merci à tous !

Link to comment
Share on other sites

Pour créer un Hook personnalisé inspire toi des pages presta existantes.
Par exemple pour la "page" header :
Tu ajoutes ton hook dans :

$smarty->assign(array(
   'HOOK_HEADER' => Module::hookExec('header'),
   'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn'),
   'HOOK_TOP' => Module::hookExec('top'),
   'static_token' => Tools::getToken(false),
   'token' => Tools::getToken(),
   'priceDisplayPrecision' => _PS_PRICE_DISPLAY_PRECISION_,
   'content_only' => intval(Tools::getValue('content_only'))
));


ce qui donne

$smarty->assign(array(
   'HOOK_HEADER' => Module::hookExec('header'),
   'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn'),
   'HOOK_TOP' => Module::hookExec('top'),
   'HOOK_SEARCH' => Module::hookExec('search'),// Pixomaniak VotrePrestashop
   'static_token' => Tools::getToken(false),
   'token' => Tools::getToken(),
   'priceDisplayPrecision' => _PS_PRICE_DISPLAY_PRECISION_,
   'content_only' => intval(Tools::getValue('content_only'))
));



Puis dans ton header.tpl du crées un hook ou tu le souhaites comme ceci

{$HOOK_SEARCH}



et enfin il faut créer une entrée dans la base de donnée et plus particulièrement dans la table ps_hook. Tu procèdes par PHPMYADMIN. Je te donne ici mon code PHP que j'ai intégré dans un module. Tu n'as qu'à t'en inspirer pour créer ta requète SQL :

$hookname = "search";
       $hooktitle = "search";
       $hookdescription = "Hook located on top of the WebSite";
       $hookposition = "1";
         if (!Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'hook` (`name`, `title`, `description`, `position`) VALUES ("'.$hookname.'", "'.$hooktitle.'", "'.$hookdescription.'", "'.$hookposition.'")'))
       return false;



Bon la fin peut être compliquée si tu ne maitrises pas bien php et sql donc bip moi si tu bloques sur la dernière étape.

  • Like 1
Link to comment
Share on other sites

Merci de votre réponse :).

Ce pendant, il me reste une autre question qui est la suivante:
Ou est contenus le code dit: HTML ? (ex: la page: TOP).

Il dois bien y avoir quelque par la structure du contenus de la page: HOOK_TOP ?

Link to comment
Share on other sites

Il n'y a pas de html. Le code html est produit par le un fichier au format .tpl (SMARTY). Exemple header.tpl C'est dans ce fichier que tu positionnes ton Hook.
Idem par exemple pour la page product.php qui appelle product.tpl et dans laquelle tu retrouveras quelques Hook...

Link to comment
Share on other sites

Je suis désolé mais je pense ne pas bien comprendre.

Pouvez vous m'indiquer l'astuce, dans l'exemple du design de base de PS, qui permet de séparer le module de recherche du HOOK_TOP pour le placer ailleurs ?

Car si je met le HOOK_TOP en haut de mon site par exemple, c'est tout le reste qui bouge avec (Le liens Favoris, Les Drapeau de langue etc...) et ce n'est pas ce que je désire.
Je désire simplement mettre le module de recherche ailleurs et le modifier en design totalement et pas simplement qu'en touchant au css.

Merci :)

Link to comment
Share on other sites

Salut,

Si c'est pour un theme personnalisé et qui ne va pas demander à être modifié par un tiers tu peux ajouter le bloc recherche directement dans le header.tpl sans créer de hook et éviter ainsi tout oublie de modif lors d'une mise à jour de Presta.

<!-- Block search module HEADER -->

   <form method="get" action="{$base_dir}search.php" id="searchbox">


<!-- image on background -->
       <input type="text" id="search_query" name="search_query" value="{if isset($smarty.get.search_query)}{$smarty.get.search_query|htmlentities:$ENT_QUOTES:'utf-8'}{/if}" />
       <input type="submit" name="submit_search" value="{l s='Search'}" class="search" />

   </form>

<!-- /Block search module HEADER -->




V++

Atch

Link to comment
Share on other sites

Ah !
Merci beaucoup Atch, je préfère ces méthodes plustôt que la création des hooks.
Ça sera largement plus facile pour moi de modifier l'input et le bouton recherche par un petit logo loupe, c'est plus esthétique :)

Link to comment
Share on other sites

@votreprestashop

%-P bonjour, j'ai passe de longue heure à essayer faire la manip hic hic

j'ai fait >>> blockvarious >>> au lieu de footer je veux le mettre en milieu de page

dans config panel il affiche bien ma module et etc...tout est ok dans panel admin mais quand j'ai place de hook dans header.tpl (donc dans ma theme), cela ne marche pas du tout.

Donc en clair si on a cree un hook on peut alors ajouter n'importe quel module d'affichage ??? comme TOP, et HEADER ?

Merci de votre reponse.

Link to comment
Share on other sites

  • 6 months later...
  • 1 year later...

je veux créer un HOOK dans le fichier order.php alors j'ai ajouter cette ligne

    'HOOK_POINTCR' => Module::hookExec('shippingcr', array('address' => $address)),




a la liste des Hook déjà présents et comme indiqué dans le post #1 . Ce hook me sert pour afficher la liste des points relais de mon module en cours de développement.
puis j'ai ajouter mon hook dans la table ps_hook et dans le fichier tpl mias lorsque je fais le debug il m'affiche

{$HOOK_POINTCR}    false





c'est a dire que le hook est vide ou quoi?

Link to comment
Share on other sites

Bonjour et merci Atch et Julien
Je crois que j'ai oublié quelques chose lors de développement de mon module points relais (en se basant sur le module mondial relay).
voici ce que j'ai fait:

-j'ai créer mon module points relais avec cette hiérarchie :
Dossier points_relais :
_point_relais.php
_logo.gif
_style.css
_points_relais.tpl ou j'ai placé le code qui permet de retrouver les transporteurs (comme dans le module mondial relay) et j'ai fait appel a des scripts javascripts qui font appel a leurs tours aux fichiers RecherchePointsRelais.php et ImpressionsEtiquettes.php
_kit =>RecherchePointsRelais.php : cherche les points relais a l'aide du code postal et me retourne la liste et ça fonctionne nickel, ImpressionsEtiquettes.php et tools/nusoap/.....

-j'ai créer un transporteur appelé Points relais

-j'ai créér un hook appelé "$HOOK_POINTCR" et je l'est placé dans order-carrier.tpl avant la fin du balise
j'ai déclencher le débogueur dans le fichier tpl de mon module et il m'affiche le HOOK suivi du script javascript et pas de liste des points relais.
je suis sur que j'ai fait une bêtise :red: mais où je ne sais pas :question:
j'ai remarqué que dans les version 1.3.x qu'on peut marquer un transporteur comme lié à un module et j'aimerais bien savoir comment le faire dans la version 1.2.5 (celle que j’utilise maintenant)?
merci d'avance pour vos réponses.

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