Jump to content

Comment enlever la limitation de 400 caracteres dans la courte description ?


Recommended Posts

Bonjour Thierry-Création

Pour enlever la limitation de 400 caractères dans la courte description de la fiche produit il faut éditer 2 fichiers : AdminProducts.php & product.php

Vous pouvez trouver la limitation et remplacer tous les "400" par le nombre que vous voulez.

Admin/Tabs/AdminProducts.php : Ligne 664 pour moi.

        /* Check description short size without html */
       foreach ($languages AS $language)
           if ($value = Tools::getValue('description_short_'.$language['id_lang']))
               if (Tools::strlen(strip_tags($value)) > 400)
                   $this->_errors[] = $this->l('the field').' '.call_user_func(array($className, 'displayFieldName'), 'description_short').' ('.$language['name'].') '.$this->l('is too long').' : 400 '.$this->l('chars max').' ('.$this->l('count now').' '.Tools::strlen(strip_tags($value)).')';



Classes/Product.php : Ligne 374 pour moi.

public function validateFieldsLang($die = true, $errorReturn = false)
   {
       foreach ($this->description_short as $k => $value)
           if (Tools::strlen(strip_tags($value)) > 400)
           {
               if ($die) die (Tools::displayError().' ('.get_class($this).'->description: length > 400 for language '.$k.')');
               return $errorReturn ? get_class($this).'->'.Tools::displayError('description: length > 400 for language').' '.$k : false;
           }
       return parent::validateFieldsLang($die, $errorReturn);
   }



Cordialement.
Melki-Tsedeq

  • Like 1
Link to comment
Share on other sites

Bonsoir Gaëlle.

Oui je vous confirme que cela fonctionne bien avec toutes les versions de prestashop.
Il faut bien repérer le code pour modifier uniquement le nombre 400.

Selon la version de prestashop ou les modifications personnelles sur ces fichiers la modification n’est pas à la même ligne que moi.

Cordialement.
Melki-Tsedeq

Link to comment
Share on other sites

Bonjour Thierry.

Pour moi vous n'avez pas modifié correctement les 2 fichiers, car cela aurais fonctionné…
L’erreur que vous avez obtenue montre que le fichier na pas été modifier. Car le nombre 400 aurait changé.

J’ai téléchargé et installer la version 1.2.0.4 qu’on peu trouver ici
Je l’ai testé et cela marche bien. Je vous montre le code : remplacer ici par 800.

Dans : Admin/Tabs/AdminProducts.php : Ligne 662 pour la 1.2.0.4

/* Check description short size without html */
       foreach ($languages AS $language)
           if ($value = Tools::getValue('description_short_'.$language['id_lang']))
               if (Tools::strlen(strip_tags($value)) > 800)
                   $this->_errors[] = $this->l('the field').' '.call_user_func(array($className, 'displayFieldName'), 'description_short').' ('.$language['name'].') '.$this->l('is too long').' : 800 '.$this->l('chars max').' ('.$this->l('count now').' '.Tools::strlen(strip_tags($value)).')';



Dans : Classes/Product.php : Ligne 374 pour la 1.2.0.4

public function validateFieldsLang($die = true, $errorReturn = false)
   {
       foreach ($this->description_short as $k => $value)
           if (Tools::strlen(strip_tags($value)) > 800)
           {
               if ($die) die (Tools::displayError().' ('.get_class($this).'->description: length > 800 for language '.$k.')');
               return $errorReturn ? get_class($this).'->'.Tools::displayError('description: length > 800 for language').' '.$k : false;
           }
       return parent::validateFieldsLang($die, $errorReturn);
   }



Maintenant si cela ne marche pas c’est que vous ne modifier pas le bon fichier ou que vous avez des erreurs sur des fichiers PHP.

Cordialement.
Melki-Tsedeq

Link to comment
Share on other sites

Bonjour a tous.

Nommam pour moi la limitation ne vient pas de la base de donnés. J’ai déjà réalisé cette modification a plusieurs reprise sur différente version de prestashop et je n’ai pas eu de problème. De plus ces deux fichiers PHP nous montrent bien que c’est eux qui gèrent la limitation des caractères et qui nous retourne les messages d’erreurs.

Gaëlle pouvez vous nous faire un retour sur cette modification, si vous l'avez utilisé et si cela a fonctionné pour vous et avez vous rencontré des problèmes. Merci

Thierry ou Gérard je pence que le mieux si vous voulez je suis prêt a vous accordé 20 mn de mon temps libre pour intervenir sur ces fichiers afin de les comparer avec une version standard pour voir d’où viens le problème. Et de faire le nécessaire pour que cela fonctionne.

2 possibilité pour intervenir sur ces fichiers, me les envoyer par mail si vous travailler en local ou un FTP par MP pour pouvoir intervenir. Merci

Cordialement.
Melki-Tsedeq

Link to comment
Share on other sites

bonjour j'ai le meme probleme mais pour le champ content du cms. Ma cgv est longue et la limitation est de 65536 characteres.

J'ai essayé de changer la ligne 24 de la class CMS.php :

protected $fieldsSizeLang = array(‘meta_description’ => 255, ‘meta_keywords’ => 255, ‘meta_title’ => 128, ‘link_rewrite’ => 128, ‘content’ => 65536);

mais rien n'y fait

merci de votre aide

Link to comment
Share on other sites

Bonjour,
Oui moi cela fonctionne.
Un détail : Je travaille sur la version 1.1.0. 5, dans le deuxième fichier à modifier (Classes/Product.php), j'ai seulement deux nombres à modifier et non trois comme sur la version 1.2.0.4


public function validateFieldsLang($die = true)
{
foreach ($this-



>description_short as $k => $value)
if (Tools::strlen(strip_tags($value)) > 600)
{


if ($die) die (Tools::displayError().' ('.get_class($this).'->description: length > 600 for language '.$k.')');


return false;
}
return parent::validateFieldsLang($die);


est ce pour cela que lorsque je rentre du texte, celui ci ne va pas automatiquement à la ligne ? (voir fichier)
est ce qu'il faudrait que je rajouter dans mon code la ligne qui manque ?

Merci !

14056_cy3CRcW3SV68i9OEKhKu_t

Link to comment
Share on other sites

Bonjour tout le monde.

Mr Gérard Vaubourg J’ai bien reçu votre message et je suis en attente de vos fichiers pour voir ce qui ne va pas.

Chouro je n’ai pas eu le temps de me plongé en profondeur sur votre problème mais dans votre cas il me semblait que cela pouvais ce réglé dans la basse de données. Voir ps_cms_lang et j’ai changé content longtext par varchar (99999) mais ça na pas marcher. Donc pour le moment je n’ai pas vraiment le temps si je peux je regarderais ça plus tard.

Gaëlle vous n’avez pas besoin de rajouter dans le code les lignes qui manque pour la 1.1.0.5
Je pense que cela viens de la feuilles de style css voir avec Firebug merci de me dire si cela règle votre problème.

Cordialement.
Melki-Tsedeq

Link to comment
Share on other sites

Merci c'est gentil.

j'avais essayeé aussi la modif dans la BD mais de toute les manieres Longtext accepte beaucoup plus de 65536 characteres, donc c'est une limitation dans prestashop.

Je continu de chercher, le site ouvre dans quelques heures, je crois que je vais devoir mettre une petite cgv de secour en attendant...

Je vous fais savoir si je trouve.

Link to comment
Share on other sites

Bonjour Thierry,

J’ai bien réceptionné vos fichiers et effectué une première comparaison.
Cependant il y a une chose que je ne comprends pas. Vous me dites plus haut poste [ # 6 ]
que vous travaillez sur une version 1.2.0.4, et vous m’avez envoyé des fichiers d’une version 1.0.

/**
 * Products class, Product.php
 * Products management
 * @category classes
 *
 * @author PrestaShop 
 * @copyright PrestaShop
 * @license http://www.opensource.org/licenses/osl-3.0.php Open-source licence 3.0
 * @version 1.0
 *
 */


Comment cela est-il possible ?
Donc je pense bien que le problème viendrait de là.

Cordialement.
Melki-Tsedeq

Link to comment
Share on other sites

Bonjour Thierry,

Aujourd’hui jour du seigneur votre problème est résolu.
Car je n’ai pas dit que l'astuce ne fonctionné pas sur une version 1.0

Donc pour vous la modification a effectué est comme ça :

Dans Admin/Tabs/AdminProducts.php : à la ligne 561.

        /* Check description short size without html */
       foreach ($languages AS $language)
           if ($value = Tools::getValue('description_short_'.$language['id_lang']))
               if (Tools::strlen(strip_tags($value)) > 1400)
                   $this->_errors[] = $this->l('the field').' '.call_user_func(array($className, 'displayFieldName'), 'description_short').' ('.$language['name'].') '.$this->l('is too long').' : 1400 '.$this->l('chars max').' ('.$this->l('count now').' '.Tools::strlen(strip_tags($value)).')';



Dans Classes/Product.php : à la ligne 299.

public function validateFieldsLang($die = true)
   {
       foreach ($this->description_short as $k => $value)
           if (Tools::strlen(strip_tags($value)) > 1400)
           {
               if ($die) die (Tools::displayError().' ('.get_class($this).'->description: length > 1400 for language '.$k.')');
               return false;
           }
       return parent::validateFieldsLang($die);
   }


J’ai modifié les 400 par 1400.

Bon à la base je vous avez déjà donnée la solution car comme je l’avais déjà dit plus haut il fallait juste repérer ces lignes de codes et de les modifier par le nombre que vous souhaité.

Cordialement
Melki-Tsedeq

Link to comment
Share on other sites

:wow: Bonjour Melki,

Je réponds suite à votre message reçu affirmant que le probléme est résolu :bug: désolé mais il n'en ai rien !!! en effet avec Thierry nous avons effectué les corrections selon vos critères mais rien n'y fait et votre solution ne fonctionne pas.
D'ailleurs je voudrais vous dire que celle ci à été formulé à la fois sur les deux sites réalisés sur des versions différentes de prestashop , l'une sur la version 1.1 et l'autre sur la version 1.5.... sans succès.

Je ne comprends pas :smirk: moi comme Thierry que vous dite pouvoir y parvenir et avoir résolu le probléme car de notre côté cela ne marche pas.

Bien cordialement.

Link to comment
Share on other sites

Bonjour Gérard,

Moi je ne comprends pas comment ce fait il, qu’avec Gaëlle, qui utilise aussi une version 1.1.0.5, et moi qui l’ai testé sur toutes les versions, il n’y est jamais eut de problème de fonctionnement.

Ce que je peux vous conseiller, c’est de tout simplement reprendre en copier-coller le code mentionné plus haut pour votre version 1.0.

Si avec ça, je n'ai pas résolu votre problème, c’est que le problème vient d’ailleurs.
Sinon veuillez consulter un professionnel PHP afin qu’il vous explique et qu’il résolve votre problème.
Moi pour des raisons professionnelles (clients et délais à respecter), je ne serai pas trop présent cette semaine.

Cordialement,
Melki-Tsedeq

Link to comment
Share on other sites

  • 1 month later...

Merci a tout pour cette information,
Je ne parle pas Francais tres bien, mais je veux lire le forums francophones pour le mieux information! Les PS developers anglais est pas fort. Le wiki n'est pas clair sur le limitations de la product (fields) aussi.

Thanks again for the good work,
Xavier

Link to comment
Share on other sites

Bonjour Thierry et Gérard,

Avez-vous pu régler votre problème ?
Si ce n’es pas le cas, mon aide est toujours d’actualité.
Vous pouvez sois ; reprendre contact avec moi par mail, sois me communiquer les deux fichiers php mentionnés plus haut pour la bonne version utilisée. Et ne pas m’envoyer un fichier php d’une mauvaise version sortit tout droit d’un chapeau magique !!

Pouvez-vous aussi me communiquer le fichier : « product.tpl » afin que je le vérifie. Ou directement, me communiquer un accès ftp sur la version testée afin de voir d’où peut venir le problème.

Je remercie Xavier (l’anglais) pour ses encouragements ! Et j’aimerais aussi de lui qui nous communique la version de prestashop utilisée pour cette modification.

PS:
Je voulais également signaler que j'ai testé sur un autre serveur pour voir si le probleme ne venait pas de la...
Et cela n'a pas été le cas.

Cordialement.
Melki-Tsedeq

Link to comment
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
×
×
  • Create New...