osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> [résolu] Ajout d'un champs supplémentaire dans un module d'expédition
mickael34
posté 12 Dec 2011, 12:11
Message #1


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 133
Inscrit : 3-January 08
Membre no 20263



Bonjour,

Dans un souci d'optimisation du taux de transfo, je cherche à améliorer la page checkout_shipping.

J'ai plusieurs choix de transporteurs et je cherche à mettre en dessous de chaque choix, un petit texte descriptif du type : "livraison sous 2 à 3 jours... la livraison se fait en boite aux lettres... en cas d'absence... bla bla bla".


Actuellement le choix des modules se présente ainsi :
- Le nom du module (par exemple : Colissimo sans signature).
- et une ligne en dessous (par exemple : Livraison vers FR...)


Sur la page checkout_confirmation (et dans l'admin, et dans le mail de confirmation), au niveau du order_total, le port est toujours indiqué avec le nom du module et entre parenthèses le texte du dessous.
Je ne peux donc pas me servir du champs qui apparait entre parenthèses car suivant sa longueur se sera illisible.

Il me faut donc bien ajouter un champs dans chaque module qui n'apparaitra que sur la page checkout_shipping et en dessous de ce qui existe déjà par défaut.

J'ai essayé de bidouiller dans le fichier d'un module et de langue mais je galère un peu...

Si quelqu'un à déjà fait ce genre de chose où à une piste, je suis preneur.

smile.gif

Ce message a été modifié par mickael34 - 12 Dec 2011, 20:39.
Go to the top of the page
 
chti_poupon
posté 12 Dec 2011, 13:16
Message #2


Ceinture noire OSC
Icône de groupe

Groupe : TechDev
Messages : 2159
Inscrit : 9-September 08
Lieu : Douai
Membre no 22915



Bonjour,
J'ai résolu cette question en modifiant catalog/includes/languages/french/checkout_shipping.php:
Code
define('TEXT_CHOOSE_SHIPPING_METHOD', '<p>Veuillez choisir la méthode d\'expédition que vous preférez utiliser pour cette commande.</p><p><b>Rappel :</b></p><p>Est livrée <b>sans frais</b> toute Commande d\'un <b>montant supérieur à</b> :</p><ol><li><u><b>'.MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER.' &euro; TTC</b></u> en marchandises pour un service <b>à domicile.</b></li><li> .. .. et la suite .. .. .. ');

une autre solution force en effet à introduire un texte supplémentaire par module, donc un alourdissement de la base de données ... et du code de chaque module, initialisation comprise dans l'admin ... Ouf !!
Bons essais
Chti poupon

Ce message a été modifié par chti_poupon - 12 Dec 2011, 13:17.
Go to the top of the page
 
mickael34
posté 12 Dec 2011, 13:26
Message #3


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 133
Inscrit : 3-January 08
Membre no 20263



Merci,

Effectivement moi, ce que je cherche à faire c'est un texte différents par modules !

Je ne suis pas forcément obligé de le mettre en base.

Je peux écrire le texte en dur dans chaque fichier de langues du module :
define('MODULE_SHIPPING_NOMDUMODULE_MONTEXTE', 'bla bla bla');

Il me faut donc savoir comment et où faire appel à ce champs.
Go to the top of the page
 
chti_poupon
posté 12 Dec 2011, 16:29
Message #4


Ceinture noire OSC
Icône de groupe

Groupe : TechDev
Messages : 2159
Inscrit : 9-September 08
Lieu : Douai
Membre no 22915



Bonjour,
Soit, mais il faut alors rentrer dans les define au lieu de paramétrer dans l'admin.
Cela donne, pour le mode d'expédition toto (inspiré de flat.php)
catalog/includes/modules/shipping/toto.php
Code
<?php
/*
  $Id: toto.php,v 1.40 2003/02/05 22:41:52 hpdl Exp $
  d'après flat
  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2003 osCommerce

  Released under the GNU General Public License
*/

  class toto {
    var $code, $title, $description, $icon, $enabled;

// class constructor
    function toto() {
      global $order;

      $this->code = 'toto';
      $this->title = MODULE_SHIPPING_TOTO_TEXT_TITLE;
      $this->glose = MODULE_SHIPPING_TOTO_MONTEXT;
      $this->description = MODULE_SHIPPING_TOTO_TEXT_DESCRIPTION;
      $this->sort_order = MODULE_SHIPPING_TOTO_SORT_ORDER;
      $this->icon = '';
      $this->tax_class = MODULE_SHIPPING_TOTO_TAX_CLASS;
      $this->enabled = ((MODULE_SHIPPING_TOTO_STATUS == 'true') ? true : false);// la valeur de test 'true' ou 'false' est convertie dans application_top depuis 'Oui' ou 'Non' ! laisser le test sur la valeur 'true'
$i=0;
$qty=0;
while ($order->products[$i]['id'])
      {
        $qty+=$order->products[$i]['qty'];
        if($order->products[$i]['price']==0)
        {
          $this->enabled = false;
        }
        $i++;
      }
     if ($order->info['total']==0){ $this->enabled = false;}
     if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_TOTO_ZONE > 0 )  ) {
        $check_flag = false;
        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_TOTO_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
        while ($check = tep_db_fetch_array($check_query)) {
          if ($check['zone_id'] < 1) {
            $check_flag = true;
            break;
          } elseif ($check['zone_id'] == $order->delivery['zone_id']) {
            $check_flag = true;
            break;
          }
        }

        if ($check_flag == false) {
          $this->enabled = false;
        }
      }
    }

// class methods
    function quote($method = '') {
      global $order;

      $this->quotes = array('id' => $this->code,
                            'module' => MODULE_SHIPPING_TOTO_TEXT_TITLE,
                            
                            'methods' => array(array('id' => $this->code,
                                                     'title' => MODULE_SHIPPING_TOTO_TEXT_WAY,
                                                     'glose' => MODULE_SHIPPING_TOTO_MONTEXT,
                                                     'cost' => MODULE_SHIPPING_TOTO_COST)));

      if ($this->tax_class > 0) {
        $this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
      }

      if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);

      return $this->quotes;
    }

    function check() {
      if (!isset($this->_check)) {
        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_TOTO_STATUS'");
        $this->_check = tep_db_num_rows($check_query);
      }
      return $this->_check;
    }

    function install() {
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Utiliser ce mode de livraison', 'MODULE_SHIPPING_TOTO_STATUS', 'Oui', 'Voulez-vous proposer ce mode de livraison ?', '6', '0', 'tep_cfg_select_option(array(\'Oui\', \'Non\'), ', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Coût de la livraison', 'MODULE_SHIPPING_TOTO_COST', '5.00', 'Le montant forfaitaire de livraison pour toute commande utilisant cette méthode.', '6', '0', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('TVA applicable', 'MODULE_SHIPPING_TOTO_TAX_CLASS', '0', 'Sélectionnez la TVA applicable sur le montant de la livraison.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Zone de livraison', 'MODULE_SHIPPING_TOTO_ZONE', '0', 'Si une zone est sélectionnée, elle sera la seule à proposer ce mode de livraison.', '6', '0', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Ordre d\'affichage', 'MODULE_SHIPPING_TOTO_SORT_ORDER', '0', 'Ordre de tri de l\'affichage dans la liste des modules.', '6', '0', now())");
    }

    function remove() {
      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
    }

    function keys() {
      return array('MODULE_SHIPPING_TOTO_STATUS', 'MODULE_SHIPPING_TOTO_COST', 'MODULE_SHIPPING_TOTO_TAX_CLASS', 'MODULE_SHIPPING_TOTO_ZONE', 'MODULE_SHIPPING_TOTO_SORT_ORDER');
    }
  }
?>

catalog/includes/languages/french/modules/shipping/toto.php
Code
<?php
/*
  $Id: toto.php,v 1.5 2002/11/19 01:48:08 dgw_ Exp $
  d'après flat
  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2002 osCommerce

  Released under the GNU General Public License
*/

define('MODULE_SHIPPING_TOTO_TEXT_TITLE', 'Transport');
define('MODULE_SHIPPING_TOTO_TEXT_DESCRIPTION', 'Frais de port par toto');
define('MODULE_SHIPPING_TOTO_TEXT_WAY', 'Forfait toto');
define('MODULE_SHIPPING_TOTO_MONTEXTE', 'bla bla bla');
?>

et dans catalog/checkout_shipping.php faire en sorte vd'avoir:
Code
                                    if ( ($checked == true) || ($n == 1 && $n2 == 1) ) {
                                      echo '                  <tr id="defaultSelected" class="moduleRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";
                                    } else {
                                      echo '                  <tr class="moduleRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";
                                    }
                        ?>
                  <td width="10">
                    <?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?>
                  </td>
                  <td class="main" width="80%">
                    <?php echo $quotes[$i]['methods'][$j]['title'].'<br>'.;
                      php echo $quotes[$i]['methods'][$j]['glose']; ?>
                  </td>


A toi de broder pour chaque type de transport !
ATTENTION, Sauvegarder: ceci n'est pas testé.

Bon code
Chti poupon
Go to the top of the page
 
mickael34
posté 12 Dec 2011, 20:38
Message #5


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 133
Inscrit : 3-January 08
Membre no 20263



Bon mon chti_poupon, j'ai encore 2-3 tests à faire mais ton truc à l'air de marcher à merveille !

C'est exactement ce que je cherchais à faire !

Merci

biggrin.gif
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 20th May 2013 - 20:29
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)