Page 1 sur 2

[Résolu] Problème de langue dans le module minislider

MessagePublié: 17 Juin 2011, 08:32
par cricri92
Bonjour
J'ai trouvé sur le forum anglais un module permettant de faire défiler les produits d'une boutique. Ce module se nomme "Minislider". voir exemple sur ma boutique : http://www.decapod.fr/boutique. il fonctionne très bien, mais le problème est qu'il inscrit mes produits en anglais et non en français, car je travail actuellement sur la traduction de mon site en langue anglaise. La langue par défaut dans opencart est le français. Voici le code de la partie catalog.
Code: Tout sélectionner
<?php
class ControllerModuleminislider extends Controller {
   public function index() {

      if ($this->config->get('iconmodule_status')) {
         $this->data['iconmodule'] = html_entity_decode($this->config->get('iconmodule_code'), ENT_QUOTES);
      } else {
         $this->data['iconmodule'] = '';
      }

      $this->load->model('catalog/minislider');
      $this->load->model('catalog/product');
      $this->load->model('catalog/review');
      $this->load->model('tool/seo_url');
      $this->load->model('tool/image');
      
      $this->data['heading_title'] = htmlspecialchars_decode($this->config->get('minislider_title'));
      $this->data['show_category'] = $this->config->get('minislider_category');
      $this->data['show_effect'] = $this->config->get('minislider_effect');
      
      $this->data['products'] = array();

      foreach ($this->model_catalog_minislider->getRandomProductByCategoryId($this->data['show_category']) as $result) {         
         if ($result['image']) {
            $image = $result['image'];
         } else {
            $image = 'no_image.jpg';
         }
         
         $rating = $this->model_catalog_review->getAverageRating($result['product_id']);   
         
         $special = FALSE;
         
         $discount = $this->model_catalog_product->getProductDiscount($result['product_id']);
         
         if ($discount) {
            $price = $this->currency->format($this->tax->calculate($discount, $result['tax_class_id'], $this->config->get('config_tax')));
         } else {
            $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
         
            $special = $this->model_catalog_product->getProductSpecial($result['product_id']);
         
            if ($special) {
               $special = $this->currency->format($this->tax->calculate($special, $result['tax_class_id'], $this->config->get('config_tax')));
            }                  
         }
            
             $this->data['products'][] = array(
               'name'    => $result['name'],
            'model'   => $result['model'],
               'rating'  => $rating,
            'stars'   => sprintf($this->language->get('text_stars'), $rating),
            'thumb'   => $this->model_tool_image->resize($image, $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')),
               'price'   => $price,
            'special' => $special,
            'href'    => $this->model_tool_seo_url->rewrite(HTTP_SERVER . 'index.php?route=product/product&product_id=' . $result['product_id'])
             );
      }
      
      if (!$this->config->get('config_customer_price')) {
         $this->data['display_price'] = TRUE;
      } elseif ($this->customer->isLogged()) {
         $this->data['display_price'] = TRUE;
      } else {
         $this->data['display_price'] = FALSE;
      }
      
      $this->id       = 'minislider';
      $this->template = $this->config->get('config_template') . '/template/module/minislider.tpl';
      $this->render();
   }
}
?>

Quelqu'un pourrait il me dire ce qu'il manque dans ce code pour avoir la description de mes produits en français.
Grand merci par avance.

Re: Probleme de langue dans le module minislider

MessagePublié: 18 Juin 2011, 11:56
par Imaxine
cricri92 a écrit:Bonjour
J'ai trouvé sur le forum anglais un module permettant de faire défiler les produits d'une boutique
Il aurait été logique que tu mettes le lien qui permet de télécharger ce module !!

Re: Problème de langue dans le module minislider

MessagePublié: 19 Juin 2011, 13:37
par Imaxine
Je vois que tu as solutionné ton problème, pourrais-tu donner l'explication pour ceux qui rencontrerait ce manque ainsi que mettre |Résolu] dans le titre de ton sujet.

Nous t'en remercions.

Re: Problème de langue dans le module minislider

MessagePublié: 19 Juin 2011, 22:19
par Fred
Hello,

Je suis volontier preneur pour le lien vers ton module Minislider (j'ai cherché en vain..)

Merci!

Re: Problème de langue dans le module minislider

MessagePublié: 21 Juin 2011, 09:48
par cricri92
J'ai trouvé ce module à cette adresse :
http://eliesdesign.com/index.php?route=product/category&path=48_87
Par contre je n'ai pas résolu mon problème, car les produits qui s'affichent en français sont en faite dans la partie anglaise, dès que je mets le titre du produit dans la partie anglaise, c'est le nom en anglais qui apparait et non le titre français.

Re: Problème de langue dans le module minislider

MessagePublié: 21 Juin 2011, 10:18
par Imaxine
Je vais tester ce module et voir les modifications ou corrections à effectuer.

Re: Problème de langue dans le module minislider

MessagePublié: 21 Juin 2011, 14:27
par Imaxine
Déjà il y a des oublis ou omissions et du code inutile au niveau des langues (pas les fichiers "language" mais le fonctionnement des langues), puisque dans les paramétrages du module, il y a dans la partie admin le paramètre "Titre" à remplir.
Or celui-ci n'est pas en multilingue puis se trouve déjà paramétré dans le fichier de langue de la boutique > catalog/language/english/module/minislider.php.
Ce paramètre étant inutile en l'état, on peut donc, sans souci supprimer :

Dans admin/controller/module/minislider.php, ces lignes :
Code: Tout sélectionner
      if (isset($this->request->post['minislider_title'])) {
         $this->data['minislider_title'] = $this->request->post['minislider_title'];
      } else {
         $this->data['minislider_title'] = $this->config->get('minislider_title');
      }

Puis ces lignes :
Code: Tout sélectionner
         if($this->request->post['minislider_title'] == ''){
            $this->error['warning'] = "You specify a title for your Minislider.";
         }
Dans
admin/language/english/module/minislider.php, ces lignes :
Code: Tout sélectionner
$_['entry_title']   = 'Minislider Title:';
Ainsi que pour les autres langues que vous avez pu créer.
Dans admin/view/template/module/minislider.tpl, ces lignes :
Code: Tout sélectionner
      <tr>
        <td><?php echo $entry_title; ?></td>
        <td><input type="text" name="minislider_title" value="<?php echo $minislider_title; ?>" size="30" /></td>
      </tr>

Comme cela, le titre de la sideboxe correspondra réellement à celui se trouvant dans le fichier de langue.

Re: Problème de langue dans le module minislider

MessagePublié: 21 Juin 2011, 15:44
par Imaxine
Il manquait la jointure de la langue dans la requête situé dans le fichier catalog/model/catalog/minislider.php

Chercher cette ligne :
Code: Tout sélectionner
      $sql = "SELECT *, pd.name AS name, p.image, m.name AS manufacturer, ss.name AS stock, (SELECT AVG(r.rating) FROM " . DB_PREFIX . "review r WHERE p.product_id = r.product_id GROUP BY r.product_id) AS rating FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "stock_status ss ON (p.stock_status_id = ss.stock_status_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p.status = '1' AND p.date_available <= NOW()";
La remplacer par celle-ci :
Code: Tout sélectionner
      $sql = "SELECT *, pd.name AS name, p.image, m.name AS manufacturer, ss.name AS stock, (SELECT AVG(r.rating) FROM " . DB_PREFIX . "review r WHERE p.product_id = r.product_id GROUP BY r.product_id) AS rating FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "stock_status ss ON (p.stock_status_id = ss.stock_status_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";

Cela devrait fonctionner, maintenant.

Re: Problème de langue dans le module minislider

MessagePublié: 21 Juin 2011, 16:22
par Imaxine
Et afin de finaliser le tout, il faut aussi traduire "All" qui se situe dans le menu déroulant du choix des catégories.

Pour ce faire il faut,

Dans le fichier admin/controller/module/minislider.php

Ajouter cette ligne :
Code: Tout sélectionner
      $this->data['text_all'] = $this->language->get('text_all');
Avant cette ligne :
Code: Tout sélectionner
      $this->data['text_enabled'] = $this->language->get('text_enabled');

Dans le fichier admin/language/french/module/minislider.php

Ajouter cette ligne :
Code: Tout sélectionner
$_['text_all']         = '----- Toutes les cat&eacute;gories -----';
Ainsi que dans les autres fichiers de langues.

Dans le fichier admin/view/template/module/minislider.tpl

Chercher ces lignes :
Code: Tout sélectionner
      <tr>
      <td width="30%"><?php echo $entry_category ?></td>
      <td><select name="minislider_category">
            <option value="0"
            <?php
              if($minislider_category == 0) {
                 ?>selected<?php
            }?>
            >All</option>
            <?php
            foreach($entry_categories as $category){
               ?>
                <option value="<?php echo $category['category_id']; ?>" <?php if($category['category_id'] == $minislider_category){ echo "selected"; }?>><?php echo $category['name']; ?></option>
                <?php
            }
            ?>
          </select></td>
      </tr>
Et les remplacer par celles-ci :
Code: Tout sélectionner
     <tr>
      <td width="30%"><?php echo $entry_category; ?></td>
      <td><select name="minislider_category">
        <option value="0"><?php echo $text_all; ?></option>
        <?php foreach ($entry_categories as $category) { ?>
        <?php if ($category['category_id'] == $minislider_category) { ?>
        <option value="<?php echo $category['category_id']; ?>" selected="selected"><?php echo $category['name']; ?></option>
        <?php } else { ?>
        <option value="<?php echo $category['category_id']; ?>"><?php echo $category['name']; ?></option>
        <?php } ?>
        <?php } ?>
      </select></td>
     </tr>

Re: Problème de langue dans le module minislider

MessagePublié: 22 Juin 2011, 09:34
par cricri92
Merci Imaxine pour toutes tes réponses pour ce module.
Je vais rapidement faire les modifications et vous tenir informé.
Encore un grand merci pour toutes tes interventions qui nous aides énormément pour valoriser nos sites internet.

Re: Problème de langue dans le module minislider

MessagePublié: 22 Juin 2011, 12:37
par cricri92
J'ai effectué tout les changements, mais le problème maintenant je n'ai plus rien aucun produit qui s’affiche dans le module.

Re: Problème de langue dans le module minislider

MessagePublié: 22 Juin 2011, 12:47
par cricri92
L'erreur vient dans la partie admin. Je n'ai pas la rubrique "Toutes catégories" dans le choix, j'ai le message suivant qui s'affiche.
[img]
minislider.PNG
[/img]

Re: Problème de langue dans le module minislider

MessagePublié: 22 Juin 2011, 12:56
par cricri92
J'ai trouver l'erreur pour la partie "Admin"
"Toutes les catégories " s'affiche bien, mais j'ai toujours rien dans le module dans la boutique, ni le titre, ni les images. Par contre si je choisi une seule catégorie, là les images défilent dans le module, mais toujours pas de titre du module.

Re: Problème de langue dans le module minislider

MessagePublié: 22 Juin 2011, 13:19
par Imaxine
Alors repars sur une version vierge et fait toutes les modifications sauf celle de la traduction de "All" et reviens nous dire ce qu'il en est.

Re: Problème de langue dans le module minislider

MessagePublié: 22 Juin 2011, 13:46
par cricri92
J'ai remis le module dans sa configuration inital, j'ai effectué les changements sauf celle de "ALL", mais idem, pas d'images qui défiles dan "all", mais dans les autres catégories pas de soucis, les images défiles bien et en français.