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

13 messages dans ce sujet

Posté(e) · Signaler ce message

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.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié) · Signaler ce message

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

Modifié (le) par xeon

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié) · Signaler ce message

 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.

 

Modifié (le) par xeon

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Ça se trouverait dans achat/index.php ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié) · Signaler ce message

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 ?

 

Modifié (le) par xeon

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié) · Signaler ce message

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.

Modifié (le) par xeon

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping