aide prestashop PhenixSuite Help
    • Catégories
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Recherche
    • S'inscrire
    • Se connecter

    Images sur les BL ne s'affichent pas

    Planifier Épinglé Verrouillé Déplacé Bugs & Améliorations
    13 Messages 2 Publieurs 2.2k Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • T Hors-ligne
      tcdsmax
      dernière édition par

      Bonjour,
      petite questio, concernant l'affichage des images des produits sur les BL (pdf).

      J'ai fait un debug directement sur le fichier delivery-slip.product-tab.tpl de l'objet $order_detail dans la boucle. Et le champ 'image' est vide.

      Est-ce qu'il faut générer les images d'une manière ou d'une autre? ou sur quelle image se repose le template ?

      merci

      1 réponse Dernière réponse Répondre Citer 0
      • eoliaE Hors-ligne
        eolia
        dernière édition par

        C'est le champ 'image_tag' normalement.
        Dans HTMLTemplateDeliverySlip.php si vous n'avez pas d'override:

                if(Configuration::get('PS_PDF_IMG_DELIVERY')) {
                    foreach($order_details as &$order_detail) {
                        if($order_detail['image'] != null) {
                            $name = 'product_mini_'.(int)$order_detail['product_id'].'_'
                                .(isset($order_detail['product_attribute_id']) ? (int)$order_detail['product_attribute_id'] : 0)
                                .'_'.$this->context->shop->id.'.jpg';
                            $path = _PS_PROD_IMG_DIR_.$order_detail['image']->getExistingImgPath().'.jpg';
        
                            $order_detail['image_tag'] = ImageManager::thumbnail($path, $name, 250, 'jpg', false);
        
                            if(file_exists(_PS_TMP_IMG_DIR_.$name)) {
                                $order_detail['image_tag'] = preg_replace('/alt=""/', 'width="45" height="45"', $order_detail['image_tag'], 1);
                            }
                        }
                    }
                    unset($order_detail);
                }
        

        Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

        1 réponse Dernière réponse Répondre Citer 0
        • T Hors-ligne
          tcdsmax
          dernière édition par

          le code est identique.
          Du coup cela signifie que je n'ai peut-être pas de miniature ?

          1 réponse Dernière réponse Répondre Citer 0
          • T Hors-ligne
            tcdsmax
            dernière édition par

            Du coup, vue que j'ai souvent des petits trucs qui déconnent ici et là, est-ce que ce serait pas mieux que je reparte d'une installation fraiche avec phenixSuite ?
            Et ensuite, ré-importer les tables et images produits, etc....

            Et si oui, avez-vous une astuce pour faire ça au mieux? ou un module, etc...

            merci d'avance.

            1 réponse Dernière réponse Répondre Citer 0
            • eoliaE Hors-ligne
              eolia
              dernière édition par

              Non, il faut trouver la cause.
              La liste des produits est générée par Order::getProductsDetail() dans laquelle sont assignées les images avec la fonction Order::setProductImageInformations().
              A voir si vous n'avez pas de surcharge (override) de la classe Order sur ces fonctions.
              Car si aucune image n'est trouvée les miniatures ne peuvent pas être générées.

                  protected function setProductImageInformations(&$product)
                  {
                      if(isset($product['product_attribute_id']) && $product['product_attribute_id']) {
                          $id_image = Db::getInstance()->getValue('
                              SELECT `image_shop`.id_image
                              FROM `'._DB_PREFIX_.'product_attribute_image` pai
                              '.Shop::addSqlAssociation('image', 'pai', true).'
                              INNER JOIN `'._DB_PREFIX_.'image` i
                                  ON(i.`id_image` = pai.`id_image`)
                              WHERE pai.`id_product_attribute` = '.(int)$product['product_attribute_id']. '
                              ORDER by i.`position` ASC
                          ');
                      }
              
                      if(!isset($id_image) || !$id_image) {
                          $cover = Product::getCover($product['product_id']);
                          if(isset($cover['id_image']))
                              $id_image = (int)$cover['id_image'];
                      }
              
                      $product['image'] = null;
                      $product['image_size'] = null;
              
                      if(isset($id_image)) {
                          $product['image'] = new Image($id_image);
                      }
                  }
              

              Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

              1 réponse Dernière réponse Répondre Citer 0
              • T Hors-ligne
                tcdsmax
                dernière édition par

                Si c'est bien la fonction qui se trouve dans le fichier classes/order/Order.php
                il y a une petite différence au niveau de la liaison dans la requete :

                protected function setProductImageInformations(&$product)
                {
                if(isset($product['product_attribute_id']) && $product['product_attribute_id']) {
                $id_image = Db::getInstance()->getValue('
                SELECT image_shop.id_image
                FROM '._DB_PREFIX_.'product_attribute_image pai
                '.Shop::addSqlAssociation('image', 'pai', true).'
                LEFT JOIN '._DB_PREFIX_.'image i
                ON(i.id_image = pai.id_image)
                WHERE pai.id_product_attribute = '.(int)$product['product_attribute_id']. '
                ORDER by i.position ASC
                ');
                }

                    if(!isset($id_image) || !$id_image) {
                        $cover = Product::getCover($product['product_id']);
                        if(isset($cover['id_image']))
                            $id_image = (int)$cover['id_image'];
                    }
                
                    $product['image'] = null;
                    $product['image_size'] = null;
                
                    if(isset($id_image)) {
                        $product['image'] = new Image($id_image);
                    }
                }
                

                Et si les overides sont forcément dans le dossier override à la racine.
                La seule chose qui est présente pour le fichier override/classes/order/Order.php, c'est ça :

                class Order extends OrderCore
                {
                /*
                * module: vosfacturesapp
                * date: 2024-01-16 10:48:43
                * version: 2.4.14
                */
                public function setInvoice($use_existing_payment = false)
                {
                require_once(PS_MODULE_DIR.'vosfacturesapp/vosfacturesapp.php');
                $module = new VosFacturesApp();
                if ($module->sendInvoice($this->id, false, true)) {
                parent::setInvoice($use_existing_payment);
                }
                }
                }

                1 réponse Dernière réponse Répondre Citer 0
                • eoliaE Hors-ligne
                  eolia
                  dernière édition par

                  Vous pouvez mettre le INNER (qui force à ne ramener QUE ce qui matche) pour tester.
                  Si toujours rien il faudra debuguer pas à pas pour trouver à quel endroit ça ne matche pas.

                  Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

                  1 réponse Dernière réponse Répondre Citer 0
                  • T Hors-ligne
                    tcdsmax
                    dernière édition par

                    j'ai remis exactement comme l'exemple que vous m'avez envoyé, et ça ne change rien. les images ne s'affichent toujours pas.

                    1 réponse Dernière réponse Répondre Citer 0
                    • eoliaE Hors-ligne
                      eolia
                      dernière édition par

                      Et en exécutant directement la requête en base de données (en remplaçant '.DB_PREFIX.' par votre préfixe) ?

                      Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

                      1 réponse Dernière réponse Répondre Citer 0
                      • T Hors-ligne
                        tcdsmax
                        dernière édition par

                        @eolia a dit dans Images sur les BL ne s'affichent pas :

                        $product['product_attribute_id']

                        J'ai voulu essayer, mais du coup, je ne sais pas quoi mettre comme valeur pour $product['product_attribute_id'].
                        Ce champ n'existe pas dans la table product.

                        1 réponse Dernière réponse Répondre Citer 0
                        • eoliaE Hors-ligne
                          eolia
                          dernière édition par

                          Pouvez-vous m'envoyer un accès ftp par mail à eolia@eoliashop.com ?
                          Ca ira plus vite 😉

                          Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

                          1 réponse Dernière réponse Répondre Citer 0
                          • eoliaE Hors-ligne
                            eolia
                            dernière édition par

                            Ok, trouvé et corrigé.
                            Il y avait un mélange entre les 2 variables de configuration d'affichage des images pour les factures et/ou bon de livraison.
                            Le correctif sera appliqué dans la 26 (fonctionnel chez vous en attendant).

                            Créateur de PhenixSuite. Pour plus d'infos : https://eoliashop.com

                            1 réponse Dernière réponse Répondre Citer 0
                            • T Hors-ligne
                              tcdsmax
                              dernière édition par

                              super,
                              merci bcp

                              1 réponse Dernière réponse Répondre Citer 0
                              • Premier message
                                Dernier message
                              bug
                              26 sujets
                              1.6
                              24 sujets
                              front-office
                              11 sujets
                              1.5
                              8 sujets
                              1.7
                              5 sujets
                              système
                              4 sujets
                              administration
                              3 sujets
                              hack
                              3 sujets
                              module
                              3 sujets
                              performance
                              3 sujets
                              smtp
                              3 sujets
                              transporteurs
                              3 sujets
                              dashboard
                              2 sujets
                              https
                              2 sujets
                              paypal
                              2 sujets
                              promotions
                              2 sujets