Jump to content

Modifier Type d'un champ de la base de données Presta


Recommended Posts

Bonjour tout le monde,

Je suis en train de faire des imports pour construire un catalogue et j'me retrouve confronté à une petite limite.
En fait, j'ai un champ caractéristique qui fait (et qui doit faire) bien plus que 255 caractères.
J'ai donc modifié le type du champ "value" dans la table ps_feature_value_lang de ma base de données afin de ne plus m'interdire l'import.

Pourtant je rencontre toujours ce message d'erreur :
Fatal error (FeatureValue->value longueur > 255 pour la langue)

J'ai fouillé la classe product.php pour voir si ma limitation se trouvait réecrite mais je ne trouve rien.

Quelqu'un aurait une idée ?

Merci.

Link to comment
Share on other sites

Re-bonjour,

En fait, ce n'est pas la classe Product qu'il faut chercher à modifier mais la classe FeatureValue ! C'est quand même logique !
On trouve très vite la $fieldsSizeLang qui est déclarée à 255...
Je m'excuse pour le post un peu inutile...

Dans mon cas je la force mais j'suis preneur d'un avis d'habitué de prestashop pour me dire si ca craint ou pas...
A part le poids final de la base est-ce que l'on peut rencontrer des problèmes ??

Link to comment
Share on other sites

Au delà du poids peuvent se trouver affectées les performances.
La classe product est utilisée vraiment partout.
Mais ici tu parles de champs caractéristiques, qui sont donc multiples pour chacun des produits.
J'aurais de préférence , mais je parle personnellement, fais un truncate lors de l'import , en codant ce truncate au dernier . (point) par exemple avant le 255ème caract. , ou dès règles de ce type en regex.
Je ne trouve pas fiable de modifier ce champ , à commencer par les mises a jour à venir.

Link to comment
Share on other sites

Créer une propriété dans mon objet "product" reviendrait à la même chose n'est-ce pas ?

En fait, pour ne pas utiliser ceci, il me faudrait une technique pour retrouver pour chaque produit toutes les catégories auquel il appartient.
Mais cette info, je n'ai pas réussi à la récupérer, j'ai donc créé une caractéristique dans lequel je rentre les mêmes données que dans "catégories" lors de l'import.

...

Link to comment
Share on other sites

  Quote

En fait, pour ne pas utiliser ceci, il me faudrait une technique pour retrouver pour chaque produit toutes les catégories auquel il appartient.
...

...


Mais ça c'est tout à fait possible et sans modification du core.
Je suppose que tu veux ces données dans smarty car sinon
Product::getCategories($id_product)



Donc dans smarty , tu peux aisément ajouter cette fonction dans /tools/smarty/plugins et y faire appel dans tes tpl.

Link to comment
Share on other sites

** Pleure à chaudes larmes...**

J'me doutais bien qu'on pouvait le faire :'(
Je cherchais trop compliqué bowdel...

Je vais tenter de faire ça et te remercie Broceliande !
Encore une fois d'ailleurs !

Link to comment
Share on other sites

Alors, je viens de créer comme je pouvais un nouveau fichier que j'ai nommé function.getcategories.php avec à l'intérieur ceci :

function smarty_function_getcategories($id_product)
{
      $produit = intval($id_product[id_product]);
      return Product::getCategories($produit);
}



J'appelle ma fonction dans mon tpl :
{getcategories id_product=$product->id}

J'ai pas bon !
Mon tpl plante...

Quelqu'un de disponible pour m'accompagner ?
:)

Link to comment
Share on other sites

tu y es presque ...
Voilà ce que je ferais , mais je te laisse le soin de tester , car je n'ai pas le temps...
Ton plugin smarty :

<?php 
function smarty_function_getCategories($params,&$smarty)
{
   if (!isset($params['id_product'])) return;
   return Product::getIndexedCategories($params['id_product'])
}
?>



Dans le tpl :

{assign var='pCategories' value=getCategories id_product=$product.id_product}


Cela te retourne donc en principe un tableau des catégories du produit dans $pCategories

Link to comment
Share on other sites

je te donne une autre methode, moins élégante , qui revient à éxécuter directement du code php dans le tpl :

                        
                           {php}
                           $product=$this->get_template_vars('product'); // nb this = smarty
                           $pcategories=Product::getIndexedCategories($product['id_product'])
                           $this->assign('pCategories',$pcategories);
                       {/php}
                       {if $pCategories}
                           {foreach from=$pCategories item=pCategory}
                                   {$pCategory['name']}
                           {/foreach}
                       {/if}    

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