Skip to main content

Cacher le stock pour une catégorie donnée

More
14 years 11 months ago #27489 by laurent
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.

More
14 years 11 months ago #27499 by nicolas
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.

More
14 years 11 months ago #27501 by laurent
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.

More
14 years 11 months ago #27502 by nicolas
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.

More
12 years 1 month ago - 12 years 1 month ago #167199 by Mickael
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 :
Code:
if($this->row->category_id!=XX)

Cordialement
Last edit: 12 years 1 month ago by Mickael.

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

More
12 years 1 month ago #167241 by Jerome
Bonjour,

Vous pouvez utiliser le in_array pour tester plusieurs catégories en même temps.
Code:
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.

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

More
12 years 1 month ago #167345 by Mickael
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.

More
12 years 1 month ago #167399 by Mohamed Thelji
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" :
Code:
echo JText::_('NO_STOCK').'<br/>';

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

More
12 years 1 month ago #167424 by Mickael
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.

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

More
12 years 1 month ago #167433 by Jerome
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.

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

More
12 years 1 month ago - 12 years 1 month ago #167504 by Mickael
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
Code:
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: 12 years 1 month ago by Mickael.

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

More
12 years 1 month ago #167547 by Jerome
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.

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

More
12 years 1 month ago - 12 years 1 month ago #169538 by Mickael
Bonsoir,

Merci pour votre réponses,
En appliquant le code ci-dessous le var_dump me retourne : NULL
Code:
<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: 12 years 1 month ago by Mickael.

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

More
12 years 1 month ago #169544 by nicolas
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.

More
12 years 1 month ago #169826 by Mickael
Bonjour,

Oui bien sûr, mais quand je fait un
Code:
var_dump($this->element)
Je retrouve sur mon listing et sur ma page produit
Code:
["category_id"]=> string(2) "44" ["category_parent_id"]=> string(2) "35"
Donc quand j'applique
Code:
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.

More
12 years 1 month ago #169872 by Xavier
Bonjour,

En fait element est utilisé dans les listing et row dans les page produit.
Donc utilisez ceci pour les listings:
Code:
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.

More
12 years 4 weeks ago #169993 by Mickael
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.259 seconds
Powered by Kunena Forum