Jump to content

Bug module Ici-relais de Exapaq


Recommended Posts

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

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

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

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

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

  • 3 weeks later...

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