Jump to content

Augmenter nombre caractères champ texte dans Personnalisation du produit


Recommended Posts

Bonjour,

 

Je suis en train de finaliser ma boutique prestashop, et je cherche vainement comment augmenter le nombre de caractères que le client peut envoyer dans un des champ texte de la personnalisation du produit.

 

Exemple :

http://www.creationata.com/faire-part-naissance-fille/47-faire-part-rosalie.html

concernant le "Texte intérieur"

 

Apparemment ce dernier est limité à 255 caractères, ce qui est un peu limite pour un texte de faire-part.

 

J'ai cherché dans Classes/Product.php

à cet endroit :

 

/* Description short is limited to 400 chars, but without html, so it can't be generic */

protected $fieldsSizeLang = array('meta_description' => 255, 'meta_keywords' => 255,

'meta_title' => 128, 'link_rewrite' => 128, 'name' => 128, 'available_now' => 255, 'available_later' => 255);

 

 

Mais je ne vois pas quel intitulé mettre entre ' et '...

 

Peut être un autre fichier à modifier ?

 

En vous remerciant par avance pour vos réponses....

Link to comment
Share on other sites

Bonjour,

Dans la DB, sur la table customized_data vous pouvez augmenter la taille max de la colonne value qui est à 255

Ensuite je n'ai pas trouvé de limite dans le core (PHP) sur ce paramêtre.

Donc testez si la modification fonctionne.

 

Ckarone

Link to comment
Share on other sites

Bonjour,

 

Merci pour votre réponse.

 

J'ai bien essayé de changer cette valeur en mettant 500 par exemple, mais apparemment le type VARCHAR est limité à 255. Du coup j'ai aussi essayé de mettre TEXT ou MEDIUMTEXT au lieu de VARCHAR mais cela ne change toujours rien...

 

J'ai l'impression que c'est bloqué à 220 caractères (lorsque je vais voir le panier ou la commande dans le BO prestashop)....

Link to comment
Share on other sites

Bonjour,

 

J'ai trouvé un début de piste ici :

 

 

Donc peut on changer quelque chose par rapport à la limitation de caractère dans le fichier themes/xxx/product.tpl ?

 

<!-- Customizable products -->
{if $product->customizable}
<ul class="idTabs">
 <li><a style="cursor: pointer">{l s='Product customization'}</a></li>
</ul>
<div class="customization_block">
 <form method="post" action="{$customizationFormTarget}" enctype="multipart/form-data" id="customizationForm">
  <p>
   <img src="{$img_dir}icon/infos.gif" alt="Informations" />
   {l s='After saving your customized product, remember to add it to your cart.'}
   {if $product->uploadable_files}<br />{l s='Allowed file formats are: GIF, JPG, PNG'}{/if}
  </p>
  {if $product->uploadable_files|intval}
  <h2>{l s='Pictures'}</h2>
  <ul id="uploadable_files">
   {counter start=0 assign='customizationField'}
   {foreach from=$customizationFields item='field' name='customizationFields'}
 {if $field.type == 0}
  <li class="customizationUploadLine{if $field.required} required{/if}">{assign var='key' value='pictures_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field}
   {if isset($pictures.$key)}<div class="customizationUploadBrowse">
	 <img src="{$pic_dir}{$pictures.$key}_small" alt="" />
	 <a href="{* $link->getProductDeletePictureLink($product,{$field.id_customization_field})*}" title="{l s='Delete'}" >
	  <img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" class="customization_delete_icon" width="11" height="13" />
	 </a>
    </div>{/if}
   <div class="customizationUploadBrowse"><input type="file" name="file{$field.id_customization_field}" id="img{$customizationField}" class="customization_block_input {if isset($pictures.$key)}filled{/if}" />{if $field.required}<sup>*</sup>{/if}
   <div class="customizationUploadBrowseDescription">{if !empty($field.name)}{$field.name}{else}{l s='Please select an image file from your hard drive'}{/if}</div></div>
  </li>
  {counter}
 {/if}
   {/foreach}
  </ul>
  {/if}
  <div class="clear"></div>
  {if $product->text_fields|intval}
  <h2>{l s='Texts'}</h2>
  <ul id="text_fields">
   {counter start=0 assign='customizationField'}
   {foreach from=$customizationFields item='field' name='customizationFields'}
 {if $field.type == 1}
  <li class="customizationUploadLine{if $field.required} required{/if}">{assign var='key' value='textFields_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field}
   {if !empty($field.name)}{$field.name}{/if}{if $field.required}<sup>*</sup>{/if}<textarea type="text" name="textField{$field.id_customization_field}" id="textField{$customizationField}" rows="1" cols="40" class="customization_block_input" />{if isset($textFields.$key)}{$textFields.$key|stripslashes}{/if}</textarea>
  </li>
  {counter}
 {/if}
   {/foreach}
  </ul>
  {/if}
  <p style="clear: left;" id="customizedDatas">
   <input type="hidden" name="quantityBackup" id="quantityBackup" value="" />
   <input type="hidden" name="submitCustomizedDatas" value="1" />
   <input type="button" class="button" value="{l s='Save'}" onclick="javascript:saveCustomization()" />
   <span id="ajax-loader" style="display:none"><img src="{$img_ps_dir}loader.gif" alt="loader" /></span>
  </p>
 </form>
 <p class="clear required"><sup>*</sup> {l s='required fields'}</p>
</div>

 

notamment par rapport à la balise TEXTAREA ?

 

Mais cela semble cependant toujours bloqué par un VARCHAR(255) quelque part dans la DB....

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...

Bonjour,

 

Non :(

 

Cela fait un mois que ma boutique est ouverte et je dois recontacter chaque client en lui disant qu'il y a eu un problème informatique.......

 

Contacté 4 développeurs, 2 n'ont pas le temps et disent que c'est pas si simple que ça, 1 propose de me le faire mais pour une somme :blink: et le dernier ne m'a pas répondu...

 

Si jamais vous avez d'autres pistes... c'est vraiment un soucis...

Link to comment
Share on other sites

  • 3 weeks later...

Salut j'ai découvert ce problème ce matin.

J'ai modifié la BDD en passant le champ value de la table customized_data en text (j'ai enlevé la taille de 255) et cela fonctionne (j'ai tout mon texte dans la BDD).

Ma version de prestashop 1.4.6.2 et je suis en local... Je sais pas si cela à une influence ?!

A plus.

Link to comment
Share on other sites

  • 7 months later...
  • 4 months later...
  • 2 years later...
  • 1 month later...
  • 4 months later...

Salut BIBI37,

 

Pourrais-tu me dire ce que tu as mis à la place de "VARCHAR"?

Car j'ai essayé et sa ne marche pas et j'aimerais bien augmenter la valeur maximal de la description des catégories. Car la description sur ma page ne s'affiche pas complètement.

Link to comment
Share on other sites

  • 6 months later...

Bonjour,

 

Pour PS v1.6.1.1

 

Je donne la solution à un problème identique : pouvoir insérer des valeurs supérieures à 255 caractères pour les caractéristiques personnalisées.

 

Le AdminControllerProducts dans sa fonction checkFeatures utilise un tableau $rules dans lequel il charge des valeurs via 'getValidationRules' qui je suppose est un appel dynamique à une fonction par son nom.

 

Donc le object model doit être modifié - dans mon cas - FeatureValue dans sa $definition qui est un tableau des propriétés de l'objet. J'ai mis 500 pour l'attribut size au champ value des langues. Attention utilisez l'overide et effacer dans le dossier cache le fichier class_index.php qui charge les classes. Voir documentation.

 

Par ailleurs pour que cela ne coince pas niveau DB il faut via PhpMyAdmin par ex. modifier la structure de la table feature_value_lang de varchar(255) à TEXT pour le champ value.

 

J'espère que cela aidera qqun.

 

Alexandre

Edited by Creativus Comunico (see edit history)
Link to comment
Share on other sites

  • 9 months later...

Je recherche la table "table customized_data" citée dans les précédents messages, car j'ai besoin de limiter à 30 caractères (impression sur rose) le champs personnalisé.

 

Hors dansclasses -> DB, je n'ai pas de fichier customized_data :/

 

Ce fichier existe toujours dans la version 1.6.1.9 ?

 

Merci pour le renseignement !

Link to comment
Share on other sites

  • 4 months later...

 

 

Le AdminControllerProducts dans sa fonction checkFeatures utilise un tableau $rules dans lequel il charge des valeurs via 'getValidationRules' qui je suppose est un appel dynamique à une fonction par son nom.

 

Donc le object model doit être modifié - dans mon cas - FeatureValue dans sa $definition qui est un tableau des propriétés de l'objet. J'ai mis 500 pour l'attribut size au champ value des langues. Attention utilisez l'overide et effacer dans le dossier cache le fichier class_index.php qui charge les classes. Voir documentation.

 

 

Bonjour, est ce que quelqu'un ou Alexandre, pourrais développer la partie ou il faut modifier le code... ? Merci !

 

Je suis sur 1.6.12...

 

Solution trouvée pour 1.6 : modifier la table + modifer classes/FeatureValue.php et mettre 9999999999999 à la place de 255

Edited by Stephanie2103 (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 4 months later...
  • 3 years later...

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...