c-manu Posted April 8, 2011 Share Posted April 8, 2011 Bonjour,sur mon site j'ai mis en place le module Ici-relais de Exapaq, il est encore très récent et il demeure encore quelques bug pour les versions antérieures ps 1.3. J'ai la version 1.2.5 de ps.J'ai réussi à installer le module en finissant le travail directement dans phpmyadmin, ça fonctionne très bien et les points relais s'affichent parfaitement.Le problème: la liste des points relais s'affiche dans toutes les zones, alors que le but c'est de l'afficher uniquement dans la zone qui lui a été attribuée.Alors je cherche à insérer une condition {if} dans le fichier icirelais.tpl dans le genre :1ere ligne: {if id_zone == 20}derniere ligne: {/if}ça parrait simple pourtant je ne sais pas du tout comment récupérer l'id zone ou nom de zone actif pour la session en cours.Dans l'espoir d'obtenir une aide, Merci d'avance Link to comment Share on other sites More sharing options...
Broceliande Posted April 8, 2011 Share Posted April 8, 2011 Je ne connais pas le module en question , mais je pense que c'est en amont, dans le code php du module et non dans le tpl , qu'il faut intervenir.La zone est récupérable en php dans $cart->id_zone (c'est une globale , il faut que la fonction contiennent la déclaration global $cart) .. Link to comment Share on other sites More sharing options...
c-manu Posted April 9, 2011 Author Share Posted April 9, 2011 Bonjour et merci pour cette réponse,dans le fichier icirelais.php j'ai repéré le code suivant : public function hookExtraCarrier($params) { global $smarty; $carrierIci = new Carrier(intval(Configuration::get('ICIRELAIS_ID_CARRIER'))); if (isset($carrierIci) AND $carrierIci->active) { $address = new Address(intval($params['cart']->id_address_delivery)); $address_details = $address->getFields(); $ici_relais_points = $this->getPoints($address_details); if(is_array($ici_relais_points)){ $smarty->assign(array( 'error' => $this->l($ici_relais_points['error']), 'ici_relais_points' => $ici_relais_points, 'urlIci' => _MODULE_DIR_.'icirelais/validation.php', 'id_carrier' => intval($carrierIci->id))); return $this->display(__FILE__, 'icirelais.tpl'); } } } Je pense que c'est là qu'il faut intervenir, par mesure de précaution voici le fichier icirelais.phpPour tester le module sur mon site aller à l'adresse www.esocalice.fr (il faut tester avec un pays etranger ou dom-tom pour se rendre compte du bug) icirelais.php Link to comment Share on other sites More sharing options...
c-manu Posted April 9, 2011 Author Share Posted April 9, 2011 Grace à Broceliande qui m'a mis sur la bonne voie j'ai pu résoudre mon probleme, tout est ok maintenant, voici ce qui a changé: public function hookExtraCarrier($params) { global $cart, $smarty; $carrierIci = new Carrier(intval(Configuration::get('ICIRELAIS_ID_CARRIER'))); if (isset($carrierIci) AND $carrierIci->active) { $address = new Address(intval($params['cart']->id_address_delivery)); $address_details = $address->getFields(); $id_zone = Address::getZoneById($address->id); $ici_relais_points = $this->getPoints($address_details); if((is_array($ici_relais_points))AND($id_zone == 20)){ $smarty->assign(array( 'error' => $this->l($ici_relais_points['error']), 'ici_relais_points' => $ici_relais_points, 'urlIci' => _MODULE_DIR_.'icirelais/validation.php', 'id_carrier' => intval($carrierIci->id))); return $this->display(__FILE__, 'icirelais.tpl'); } } } L'inconvénient c'est que j'aurai préféré que ça fonctionne avec le nom de la zone et non pas avec l'Id_zone, la raison c'est que dans le module icirelais le nom de la zone est "France" ce nom est invariable, alors que l'id varie d'un site à un autre.Si vous avez une petite idée ? Link to comment Share on other sites More sharing options...
Broceliande Posted April 9, 2011 Share Posted April 9, 2011 public function hookExtraCarrier($params) { global $cart, $smarty; $carrierIci = new Carrier(intval(Configuration::get('ICIRELAIS_ID_CARRIER'))); if (isset($carrierIci) AND $carrierIci->active) { $address = new Address(intval($params['cart']->id_address_delivery)); $address_details = $address->getFields(); $zone = new Zone(Address::getZoneById($address->id)); $ici_relais_points = $this->getPoints($address_details); if((is_array($ici_relais_points))AND($zone->name == 'France')){ $smarty->assign(array( 'error' => $this->l($ici_relais_points['error']), 'ici_relais_points' => $ici_relais_points, 'urlIci' => _MODULE_DIR_.'icirelais/validation.php', 'id_carrier' => intval($carrierIci->id))); return $this->display(__FILE__, 'icirelais.tpl'); } } } Link to comment Share on other sites More sharing options...
c-manu Posted April 9, 2011 Author Share Posted April 9, 2011 Merci beaucoup,ça marche nickel ! Link to comment Share on other sites More sharing options...
hulk Posted April 25, 2011 Share Posted April 25, 2011 bonjour c-manuEst ce que ce module fonctionne comme les point relais de Chronopost? et où je peut le trouver ce module, pourrais tu me renseigner?merci d'avance Link to comment Share on other sites More sharing options...
c-manu Posted April 25, 2011 Author Share Posted April 25, 2011 Ce module est fourni par Exapaq, je ne sais pas s'il y a un rapport avec chronopost (je ne crois pas). Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now