Récupérer le début de la description

13 posts in this topic

Posted · Report post

Bonjour,

Existe-il une solution déjà testée, pour récupérer le début de la description et s'en servir comme un descriptif court (avec nombre de caractères limités à 50 pas exemple), et qui pourrait s'afficher sur la page des catégories ?

Merci.

 

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Vous pouvez éditer vos produits pour remplir le champ "descriptif" qui permet d'afficher quelques lignes de contenu sur les pages de catégories.

Sur les versions 8 de PEEL, vous pouvez définir le paramètre de site product_short_description_generate_if_empty / boolean / true et changer le 2ème paramètre de la fonction str_shorten, puisque l'on récupère les 500 premiers caractères par défaut :

            if(empty($this->descriptif) && !empty($GLOBALS['site_parameters']['product_short_description_generate_if_empty'])) {
                $this->descriptif = String::str_shorten(String::strip_tags($this->description), 500);
            }

Sur les versions plus anciennes il faut ajouter ce code dans la fonction Product de la classe Product.

Share this post


: post
Share on other sites

Posted (edited) · Report post

Je suis sur une version 6.3, et je ne vois pas trop où placer le code dans la fonction.

Edited by xeon

Share this post


: post
Share on other sites

Posted (edited) · Report post

 J'ai finalement remplacé (dans la class Product)

   if (empty($this->descriptif)) {
            $descriptif = 'descriptif_' . $_SESSION['session_langue'];
            $this->descriptif = String::html_entity_decode_if_needed(vb($this->$descriptif));

par

if (empty($this->descriptif)) {
        $descriptif = 'descriptif_' . $_SESSION['session_langue'];
             $this->descriptif = String::html_entity_decode_if_needed($this->description);

Alors là je trouve la description qui joue le rôle du descriptif, mais sur la page qui affiche le produit, alors que je voudrais que le début du descriptif long s'affiche sur les pages listant les produits, c'est-à-dire les pages de catégories, et que chaque titre de produit listé sur la page "catégories", soit suivi d'une partie du descriptif long.

 

Edited by xeon

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Pour cibler les pages de catégories spécifiquement, vous pouvez faire un test sur la constante IN_CATALOGUE qui est défini que dans les pages de catégories. Pour récupérer une partie seulement, vous pouvez utiliser la fonction str_shorten de la classe String.

Share this post


: post
Share on other sites

Posted · Report post

Là ça devient plus compliqué pour moi. Il n'y a donc pas de base approximative existante ?

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

un code similaire existe sur la version actuelle, comme indiqué dans mon message précédent : http://forum.peel.fr/topic/9441-récupérer-le-début-de-la-description/?do=findComment&comment=34370

mais nous n'avons pas d'autre morceau de code de ce genre. Si vous le souhaitez nous pouvons réaliser ce développement pour vous, il faut dans ce cas faire votre demande à notre service commercial au 01 75 43 67 97.

Share this post


: post
Share on other sites

Posted · Report post

Ça se trouverait dans achat/index.php ?

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

cette modification est à faire plutôt dans la classe Product.

Share this post


: post
Share on other sites

Posted · Report post

Je croyais que la classe product générait seulement l'affichage du produit dans la page produit. Or comme dit plus haut, je voudrais que mes débuts de descriptions s'affichent seulement sur les listes de catégories. Pouvez-vous me confirmer sachant cela, qu'il s'agit bien de la classe product ?

Merci.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

La classe Product est utilisé partout où il est nécessaire de récupérer des informations sur des produits donc elle est utilisée sur la page produit, mais aussi sur les pages de catégories par exemple.

Share this post


: post
Share on other sites

Posted (edited) · Report post

Bonjour,

J'ai pu avancer sur ce projet.
J'ai réussi à intégrer le code pour permettre l'affichage de la description dans la liste des produits sur la page des catégories.
Dans display_product, j'ai ajouté (en fait j'ai repris ce code depuis la fonction qui affiche les produits sur la page produits).

// debut affichage description            
                                    
        if (defined('IN_CATALOGUE')) {                  
    $product_object->description = String::html_entity_decode($product_object->description);
                $product_object->description = String::str_shorten(($product_object->description), 200);
                    if (!empty($product_object->description)) {
            $output .= '
                <div style="margin-left:4px; padding:0px;">' . $product_object->description . '</p><a target=_blank href="' . $urlprod . '" title="' . String::str_form_value($product_object->name) . '">';
            }
    }
                
        // fin affichage description   

Ceci m'affiche bien la description sur la page catégories, mais toujours, également, un doublon de la description sur la page du produit (quand j'intervenais sur product.php, je n'obtenais que l'affichage en double sur la page produits, mais rien sur la page des catégories).

Dès lors, est-il possible d'empêcher cet affichage en double sur la page produits ?

 

Edited by xeon

Share this post


: post
Share on other sites

Posted (edited) · Report post

Je crois que j'ai trouvé. Puisque j'ai deux affichages dans la page produits, c'est que ce qui s'affiche en double, c'est la partie descriptif, qui reprend la description (je ne sais pas pourquoi mais c'est un fait). Comme la description s'affiche comme d'habitude, je me retrouve donc avec deux descriptions au lieu de une. Ce que j'ai fait :

Dans display_product, j'ai commenté les lignes

 //if (!empty($product_object->descriptif)) {
            //    $output .= '
            //    <p>' . $product_object->descriptif . '</p>';
        //    }

Et le descriptif inutile a disparu. Dès lors j'ai bien un seul affichage sur les pages produits, et j'ai toujours également mon affichage dans la page des catégories.

Merci de votre aide.

Edited by xeon

Share this post


: post
Share on other sites

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

Twitter Advisto ecommerce

Facebook PEEL Shopping