Code de variantes - modification des suffixes par défault

  • Posts: 24
  • Thank you received: 1
7 years 3 months ago #275518

-- HikaShop version -- : 3.1.1
-- PHP version -- : 7

Le code de produit généré par les variantes est toujours rendu de la façon suivante:

[CODEdePRODexistant] _Variant1[Caracteristic_id] _Variant2[Caracteristic_id]

J'ai trouvé un vieux post qui indiquait des modifications à apporter afin que le code de variable soit le caracteristic_alias et sans les underscore(_) ( donnée préalablement créée avec phadmin) toutefois il semblerait que j’ai des problèmes a traduire le code du poste étant devenu, semblerait-il, obsolète. Lorsque j'apporte les modifications dans le fichier suggeér, les valeurs des variantes ne s'affichent plus sur le tableau.

Voici le post auquel je fais référence

www.hikashop.com/forum/4-how-to/34414-ch...iant-code.html#34474

Last edit: 7 years 3 months ago by vapurete.

Please Log in or Create an account to join the conversation.

  • Posts: 82868
  • Thank you received: 13378
  • MODERATOR
7 years 3 months ago #275537

Bonjour,

En effet cela a changé.
Je pense que maintenant, il va falloir changer cette ligne:

$concat[] = 'c'.$k.'.characteristic_id';
en:
$concat[] = 'c'.$k.'.characteristic_alias';
toujours dans le fichier administrator/components/com_hikashop/classes/product.php

Please Log in or Create an account to join the conversation.

  • Posts: 24
  • Thank you received: 1
7 years 3 months ago #275598

C'est bien ce que j'avais fait initialement, le code est effectivement transformé (quoi que les _ sont toujours la)

mais les tableau n'affiche plus la valeur de la variante
et les selecteurs ne s'affichent égalementplus dans le menu editeur


ceux qui apparaissent avait ete ajoutés prealablement

Attachments:
Last edit: 7 years 3 months ago by vapurete.

Please Log in or Create an account to join the conversation.

  • Posts: 82868
  • Thank you received: 13378
  • MODERATOR
7 years 3 months ago #275600

Bonjour,

Ce que vous décrivez indique que le système n'arrive pas à créer ces entrées suite à la modification car il n'arrive pas à découper correctement le code produit.
En effet, le code plus bas:

foreach($new_variants as $v) {
						if((int)$v->product_parent_id != (int)$product_id) {
							foreach($variants[(int)$v->product_parent_id] as $k => $variant) {
								if($auto_variants == 2 && in_array($k, $characteristic_ids))
									continue;
								$data[] = (int)$variant . ',' . (int)$v->product_id;
							}
						}
						$codes = explode('_', $v->product_code);
						$codes = array_slice($codes, -$count_values);
						foreach($codes as $code) {
							if(isset($value_characteristic[ (int)$code ]))
								$data[] = (int)$code . ',' . (int)$v->product_id;
						}
					}
génère les entrées à ajouter dans la table hikashop_variant pour les nouvelles variantes créées. Et il se base sur les codes des variantes.

Il va falloir changer le code:
if(isset($value_characteristic[ (int)$code ]))
								$data[] = (int)$code . ',' . (int)$v->product_id;
et remplacer $code, qui contient du coup l'alias de la valeur de caractéristique par l'id correspond dans hikashop_characteristic.
Donc il va falloir faire une nouvelle requête en plus pour chaque entrée ou alors précharger cela avant...
Quelque chose comme cela par exemple:
$this->database->setQuery('SELECT characteristic_id FROM #__hikashop_characteristic WHERE characteristic_alias = '.$this->database->Quote($code));
							$code = $this->database->loadResult();
							if(isset($value_characteristic[ (int)$code ]))
								$data[] = (int)$code . ',' . (int)$v->product_id;

Please Log in or Create an account to join the conversation.

  • Posts: 24
  • Thank you received: 1
7 years 3 months ago #275733

Merci mon ami!
effectivement c'était a bonne solution de modif à apporté,Merci! Merci! maintenant autres 2 petites questions et j'aurai terminé. :-)

1. Je voudrais le code généré sans le __ de séparation lors de la composition? je t'avouerais que les . '_' . y en a des tonnes dans le product.php lesquelles dois-je retirer?

2. a y t il une place ou mettre ce fichier classe pour ne pas qu 'il soit ecrasé lors de la prochaine mis à jour?

Merci encore !

Please Log in or Create an account to join the conversation.

  • Posts: 82868
  • Thank you received: 13378
  • MODERATOR
7 years 3 months ago #275736

Bonjour,

1. Enlever les _ de séparation va être problématique. En effet la ligne:
$codes = explode('_', $v->product_code);
se base justement sur ce caractère pour pouvoir découper le code produit des variantes (sans parler d'autres morceaux de cette grosse fonction qui gère les ajouts/modifications/suppression de variantes).
Donc pour faire cela, il faudrait revoir un gros morceau de cette fonction... bonne chance :)
Vous êtes parti pour plusieurs semaines de développement là et vous avez intérêt de bien vous y connaitre en PHP et MySQL car c'est très compliqué.

2. C'est possible avec un plugin d'override de classes par exemple:
www.hikashop.com/forum/2-general-talk-ab...custom-features.html

The following user(s) said Thank You: vapurete

Please Log in or Create an account to join the conversation.

Time to create page: 0.074 seconds
Powered by Kunena Forum