Cacher le stock pour une catégorie donnée

  • Posts: 246
  • Thank you received: 5
12 years 6 months ago #27489

Bonjour,

Le forum donne des solutions pour ne pas afficher l'information relative au stock. Mais est-il possible de conditionner cela à une catégorie donnée ?

Merci,

Laurent

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

  • Posts: 81675
  • Thank you received: 13096
  • MODERATOR
12 years 6 months ago #27499

Il n'y a pas d'option pour cela. Maintenant, tout est possible en modifiant le code...
Il faudrait essayer de changer la ligne:
echo '<span class="hikashop_product_stock_count">'.JText::sprintf('X_ITEMS_IN_STOCK',$this->row->product_quantity).'</span><br/>';

en:
if($this->row->category_id==XXX) echo '<span class="hikashop_product_stock_count">'.JText::sprintf('X_ITEMS_IN_STOCK',$this->row->product_quantity).'</span><br/>';
dans le fichier quantity de la vue product via le menu Affichage->Vues.

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

  • Posts: 246
  • Thank you received: 5
12 years 6 months ago #27501

Dans mon cas c'est la négation de la condition puisqu'il n'y a qu'une catégorie (produits en solde) pour laquelle on n'affiche pas le stock :

if($this->row->category_id!=20) echo '<span class="hikashop_product_stock_count">'.JText::sprintf('X_ITEMS_IN_STOCK',$this->row->product_quantity).'</span><br/>';

Cela semble fonctionner très bien. Encore bravo pour la vitesse de la réponse et la précision.

Merci

PS : il faudrait regrouper toutes ces "astuces" dans un manuel ou un wiki non ? La recherche dans le forum n'est pas si facile (pourtant je le fais avant en français et en anglais).

Bonne journée,

Laurent

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

  • Posts: 81675
  • Thank you received: 13096
  • MODERATOR
12 years 6 months ago #27502

Le problème c'est que chaque personne a besoin d'une modification différente... Il n'est pas possible de rassembler tout cela dans la documentation. Ce serait trop. Par exemple, pour votre modification, c'est la première fois que quelqu'un demande cela, donc de toute façon vous n'auriez pas trouvé, ni dans la documentation, ni sur le forum.

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

  • Posts: 7
  • Thank you received: 0
9 years 9 months ago #167199

Bonsoir,

Désoler de déterrer un topic si vieux, mais je voudrais effectuer exactement la même chose à un détail prêt c'est que je voudrais l'appliquer à une catégorie et ses héritiers est ce possible?

En travaillant avec le code si dessus :

if($this->row->category_id!=XX)

Cordialement

Last edit: 9 years 9 months ago by Mickael.

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

  • Posts: 26030
  • Thank you received: 4006
  • MODERATOR
9 years 9 months ago #167241

Bonjour,

Vous pouvez utiliser le in_array pour tester plusieurs catégories en même temps.

if(in_array($this->row->category_id, array(XX,YY,ZZ))
Par contre pour faire une catégorie et ses enfants, il faut faire une requête en base de données (direct ou via l'utilisation de la classe catégorie) pour récupérer tous les enfants d'une catégorie donnée (via les left/right du b-tree).
Le plus simple est à mon avis de mettre la liste dans le array, surtout si vos catégories ne vont pas changer spécialement avec le temps.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

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

  • Posts: 7
  • Thank you received: 0
9 years 9 months ago #167345

Bonsoir,

Merci pour votre réactivité, effectivement la solution la plus simple serait de préciser chaque catégorie.
Est ce vraiment plus complexe d'appliquer à une catégorie et ces enfants (Je serais mené de temps en temps à rajouter des catégories).

Vous me conseillez de faire toute suite le array et de faire la manipulation d'ajouts des nouvelles catégories au fur et à mesure?

Deuxième petite question:

Ou dois-je appliquer le code pour effacer le "NO_STOCK" sur la liste des produits, et non sur la page du produit?

Merci d'avance.
Cordialement.

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

  • Posts: 12953
  • Thank you received: 1778
9 years 9 months ago #167399

Bonjour,
1.

Vous me conseillez de faire toute suite le array et de faire la manipulation d'ajouts des nouvelles catégories au fur et à mesure?

Cette solution serai la plus rapide, et ajouter l'ID d'une nouvelle catégorie enfant ne vous prendra pas beaucoup de temps.

2.
Il faudra appliquer ce code via cette ligne du fichier "quantity" de la vue "product" de votre template de front-end via "Hikashop->Affichage->Vues" :
echo JText::_('NO_STOCK').'<br/>';

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

  • Posts: 7
  • Thank you received: 0
9 years 9 months ago #167424

Merci pour votre réponses.

J'ai appliquer le in_array dans les catégorie que je voulais masquer le "NO_STOCK"

Le problème c'est que le "NO_STOCK" est bien masqué sur la description du produit mais pas sur la page de la liste des produits.

Je vous joins les photos ci-dessous.

Attachments:

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

  • Posts: 26030
  • Thank you received: 4006
  • MODERATOR
9 years 9 months ago #167433

Bonjour,

"NO_STOCK" peut également être affiché par la vue "add_to_cart_listing".
Vous devez donc mettre le même code dans cette vue pour cacher ce texte (qui n'affiche pas le stock mais indique lorsqu'il n'y en a plus).

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

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

  • Posts: 7
  • Thank you received: 0
9 years 9 months ago #167504

Bonjour,

Je ne pense pas que le NO_STOCK pour la liste des produits soit gérer par "add_to_cart_listing" en testant et supprimant le "NO_STOCK" en " " l’écho s'affiche toujours sur la liste des produits à l'inverse quand j'effectue cette manipulation sur la commande de la vue "quantity" l’écho ne s'affiche pas sur la liste des produits ainsi que sur la description du produit.

Le soucis est dès que j'insère ma commande

if(in_array($this->row->category_id, array(44,87,88,91,92,93,94,142,143,144,145)))

Le "NO_STOCK" disparaît bien dans la description du produit mais pas sur ma liste de produit...

Cordialement

Last edit: 9 years 9 months ago by Mickael.

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

  • Posts: 26030
  • Thank you received: 4006
  • MODERATOR
9 years 9 months ago #167547

Bonjour,

En fait oui, c'est tout à fait logique.
" $this->row->category_id " n'est accessible que lorsque vous êtes dans la page produit.
C'est bien la vue "quantity" qui est appelée dans votre listing mais à ce moment là, on ne peut pas accéder à la variable "category_id".

Par contre vous avez la variable " $this->row->categories " qui se trouve être un tableau.
Je vous recommande d'utiliser " var_dump() " afin de connaitre le contenu (ou la présence) d'une variable ; vous aidant ainsi à faire votre modification de vue.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

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

  • Posts: 7
  • Thank you received: 0
9 years 8 months ago #169538

Bonsoir,

Merci pour votre réponses,
En appliquant le code ci-dessous le var_dump me retourne : NULL

<div class="hikashop_product_no_stock">
		<?php
			echo JText::_('NO_STOCK').'<br/>'; var_dump($this->row->categories) ;
			$waitlist = $this->config->get('product_waitlist',0);
			if(hikashop_level(1) && ($waitlist==2 || ($waitlist==1 && (!empty($this->element->main->product_waitlist) || !empty($this->element->product_waitlist))))){ ?>

J'ai l'impression que il y aucune db identique appeler sur la page produit et sur la liste des produits....
Est-il compliqué d'appeler "category_id" sur la liste des produits ?

Je ne vois pas comment je pourrais m'en sortir ...

Merci pour votre aide.
Cordialement

Last edit: 9 years 8 months ago by Mickael.

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

  • Posts: 81675
  • Thank you received: 13096
  • MODERATOR
9 years 8 months ago #169544

Bonjour,

Peut être est-ce parce que vous êtes sur une ancienne version d'HikaShop, ou qu'avec certaines combinaison d'option cette variable n'est pas initialisée.
Mais si vous voulez connaitre la catégorie courante sur un listing de produit c'est $this->element que vous voulez utiliser. Elle contient différents attributs dont category_id qui est l'id de la catégorie courante.
Mais bon, vous n'avez pas vraiment besoin de nous pour trouver cela. Sur n'importe quelle vue, si vous faites un var_dump de $this vous obtiendrez la liste de toutes les variables disponibles.

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

  • Posts: 7
  • Thank you received: 0
9 years 8 months ago #169826

Bonjour,

Oui bien sûr, mais quand je fait un

var_dump($this->element)
Je retrouve sur mon listing et sur ma page produit
["category_id"]=> string(2) "44" ["category_parent_id"]=> string(2) "35"
Donc quand j'applique
if(in_array($this->row->category_id, array(44)))
il devrait marcher sur les deux pages non?

Cordialement

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

  • Posts: 13201
  • Thank you received: 2322
9 years 8 months ago #169872

Bonjour,

En fait element est utilisé dans les listing et row dans les page produit.
Donc utilisez ceci pour les listings:

if(in_array($this->element->category_id, array(44)))

The following user(s) said Thank You: Mickael

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

  • Posts: 7
  • Thank you received: 0
9 years 8 months ago #169993

Bonjour,

Voilà, parfait problème résolu, il suffisait d'appeler element pour le listing et row pour le produit.

Merci pour votre aide et votre réactivité.
:cheer: :woohoo:

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

Time to create page: 0.112 seconds
Powered by Kunena Forum