[Skip to main content](#vessel-content)

#   Load full product

##

- **[Minie](/forum/user/43321-minie "View Minie's Profile")**
- [![Minie's Avatar](https://www.hikashop.com/media/kunena/avatars/resized/size144/users/avatar43321.jpg)](/forum/user/43321-minie "View Minie's Profile") Topic Author
- [ Offline](/forum/user/43321-minie)

Less More

- Posts: 511
- Thank you received: 37
-
-
-

3 years 11 months ago -  3 years 11 months ago [\#346802](#346802) by [Minie](/forum/user/43321-minie "View Minie's Profile")  *[Load full product](/forum/5-support-en-francais-french-support-/905398-load-full-product#346802 "Bonjour,  j'arrête de chercher, je pose la question :silly:  Je cherche à charge un produit complet tel qu'il est dans la vue product dans la variable this-&gt;element, mais lorsque j'utiliser getProduct, je n'ai pas tout, il manque les variantes, les prices, etc, il n'y a que les infos de ligne de la table product et les images.  Un peu comme la fonction loadFullCart qui donne toutes les données liées.  De manière général, cette fonction me manque souvent, donc on peut mettre le contexte à part mais je le donne quand même au cas ou  Le contexte : Je suis dans une vue produit, avec les options de variantes en listes déroulantes, mon client souhaite que le tarif &quot;à partir de&quot; s'affiche avant d'avoir sélectionné les options. Le tarif qui était de base caché n'était pas celui de la variante la moins chère. J'avais modifié la vue listing&#95;price pour que le prix le plus bas soit afficher, mais forcément, ma modif bloque l'affichage dynamique du nouveau prix une fois les options sélectionnées. Donc je me suis dit que j'allais faire la modif en amont, à la ligne $this-&gt;row = &amp;$this-&gt;element; juste avant le loadTemplate du listing&#95;price dans la vue produit.  mais là je coince car lorsque je remplace this-&gt;row par la variante la moins chère, tout ce dont la vue listing&#95;price à besoin n'est pas chargé  j'aurais aimé faire quelque chose du type :  Mais voilà, il manque plein d'infos dans this-&gt;row par rapport à this-&gt;element  je sais que c'est un peu tordu, j'espère avoir été le plus clair possible  Merci d'avance")* was created by *[Minie](/forum/user/43321-minie "View Minie's Profile")*

Bonjour,

j'arrête de chercher, je pose la question :silly:

Je cherche à charge un produit complet tel qu'il est dans la vue product dans la variable this-&gt;element, mais lorsque j'utiliser getProduct, je n'ai pas tout, il manque les variantes, les prices, etc, il n'y a que les infos de ligne de la table product et les images.

Un peu comme la fonction loadFullCart qui donne toutes les données liées.

De manière général, cette fonction me manque souvent, donc on peut mettre le contexte à part mais je le donne quand même au cas ou

Le contexte :
Je suis dans une vue produit, avec les options de variantes en listes déroulantes, mon client souhaite que le tarif "à partir de" s'affiche avant d'avoir sélectionné les options.
Le tarif qui était de base caché n'était pas celui de la variante la moins chère.
J'avais modifié la vue listing_price pour que le prix le plus bas soit afficher, mais forcément, ma modif bloque l'affichage dynamique du nouveau prix une fois les options sélectionnées.
Donc je me suis dit que j'allais faire la modif en amont, à la ligne $this-&gt;row = &amp;$this-&gt;element; juste avant le loadTemplate du listing_price dans la vue produit.

mais là je coince car lorsque je remplace this-&gt;row par la variante la moins chère, tout ce dont la vue listing_price à besoin n'est pas chargé

j'aurais aimé faire quelque chose du type : Code:

if ($this-&gt;params-&gt;get('show_price') &amp;&amp; (empty($this-&gt;displayVariants['prices']) &#124;&#124; $this-&gt;params-&gt;get('characteristic_display') != 'list')) { $productClass = hikashop_get('class.product'); if($this-&gt;row-&gt;product_type == 'main'){ $db-&gt;setQuery('SELECT * FROM #__hikashop_product WHERE product_published = 1 AND product_parent_id = '.$this-&gt;row-&gt;product_id.' ORDER BY product_sort_price LIMIT 1'); $this-&gt;row = $db-&gt;loadObject(); $this-&gt;row = $productClass-&gt;getProduct($this-&gt;row-&gt;product_id); } elseif($this-&gt;row-&gt;product_type == 'variant'){ $db-&gt;setQuery('SELECT * FROM #__hikashop_product WHERE product_published = 1 AND product_parent_id = '.$this-&gt;row-&gt;product_parent_id.' ORDER BY product_sort_price LIMIT 1'); $this-&gt;row = $db-&gt;loadObject(); $this-&gt;row = $productClass-&gt;getProduct($this-&gt;row-&gt;product_id); } $this-&gt;setLayout('listing_price'); echo $this-&gt;loadTemplate();

Mais voilà, il manque plein d'infos dans this-&gt;row par rapport à this-&gt;element

je sais que c'est un peu tordu, j'espère avoir été le plus clair possible

Merci d'avance

Last edit: 3 years 11 months ago by [Minie](/forum/user/43321-minie "View Minie's Profile").

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA1Mzk4LWxvYWQtZnVsbC1wcm9kdWN0P3RtcGw9bWFya2Rvd24=) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

- **[nicolas](/forum/user/63-nicolas "View nicolas's Profile")**
- [![nicolas's Avatar](https://www.hikashop.com/media/kunena/avatars/resized/size144/users/avatar63.png?1793428657)](/forum/user/63-nicolas "View nicolas's Profile")
- [ Away](/forum/user/63-nicolas)

Less More

- Posts: 86363
- Thank you received: 14297
-
-

3 years 11 months ago [\#346815](#346815) by [nicolas](/forum/user/63-nicolas "View nicolas's Profile")  Replied by *[nicolas](/forum/user/63-nicolas "View nicolas's Profile")* on topic *[Load full product](/forum/5-support-en-francais-french-support-/905398-load-full-product#346815 "Bonjour,  j'arrête de chercher, je pose la question :silly:  Je cherche à charge un produit complet tel qu'il est dans la vue product dans la variable this-&gt;element, mais lorsque j'utiliser getProduct, je n'ai pas tout, il manque les variantes, les prices, etc, il n'y a que les infos de ligne de la table product et les images.  Un peu comme la fonction loadFullCart qui donne toutes les données liées.  De manière général, cette fonction me manque souvent, donc on peut mettre le contexte à part mais je le donne quand même au cas ou  Le contexte : Je suis dans une vue produit, avec les options de variantes en listes déroulantes, mon client souhaite que le tarif &quot;à partir de&quot; s'affiche avant d'avoir sélectionné les options. Le tarif qui était de base caché n'était pas celui de la variante la moins chère. J'avais modifié la vue listing&#95;price pour que le prix le plus bas soit afficher, mais forcément, ma modif bloque l'affichage dynamique du nouveau prix une fois les options sélectionnées. Donc je me suis dit que j'allais faire la modif en amont, à la ligne $this-&gt;row = &amp;$this-&gt;element; juste avant le loadTemplate du listing&#95;price dans la vue produit.  mais là je coince car lorsque je remplace this-&gt;row par la variante la moins chère, tout ce dont la vue listing&#95;price à besoin n'est pas chargé  j'aurais aimé faire quelque chose du type :  Mais voilà, il manque plein d'infos dans this-&gt;row par rapport à this-&gt;element  je sais que c'est un peu tordu, j'espère avoir été le plus clair possible  Merci d'avance")*

Bonjour,

C'est surtout les prix qu'il manque dans $this-&gt;row pour que cela fonctionne.
Il faudrait rajouter cela: Code:

$ids = array($this-&gt;row-&gt;product_id); $this-&gt;currencyClass-&gt;getPrices($this-&gt;row, $ids, null, null, null, null);

Cela va chager les discounts et les prix du produit. Et si c'est pour le produit principal et qu'il faut pouvoir utiliser le prix d'une variante, alors il faut également spécifier l'id de la variante dans $ids.

Faire un getFullProduct pour avoir toutes les informations d'un produit est une bonne idée.

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA1Mzk4LWxvYWQtZnVsbC1wcm9kdWN0P3RtcGw9bWFya2Rvd24=) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

- **[Minie](/forum/user/43321-minie "View Minie's Profile")**
- [![Minie's Avatar](https://www.hikashop.com/media/kunena/avatars/resized/size144/users/avatar43321.jpg)](/forum/user/43321-minie "View Minie's Profile") Topic Author
- [ Offline](/forum/user/43321-minie)

Less More

- Posts: 511
- Thank you received: 37
-
-
-

3 years 11 months ago [\#346850](#346850) by [Minie](/forum/user/43321-minie "View Minie's Profile")  Replied by *[Minie](/forum/user/43321-minie "View Minie's Profile")* on topic *[Load full product](/forum/5-support-en-francais-french-support-/905398-load-full-product#346850 "Bonjour,  j'arrête de chercher, je pose la question :silly:  Je cherche à charge un produit complet tel qu'il est dans la vue product dans la variable this-&gt;element, mais lorsque j'utiliser getProduct, je n'ai pas tout, il manque les variantes, les prices, etc, il n'y a que les infos de ligne de la table product et les images.  Un peu comme la fonction loadFullCart qui donne toutes les données liées.  De manière général, cette fonction me manque souvent, donc on peut mettre le contexte à part mais je le donne quand même au cas ou  Le contexte : Je suis dans une vue produit, avec les options de variantes en listes déroulantes, mon client souhaite que le tarif &quot;à partir de&quot; s'affiche avant d'avoir sélectionné les options. Le tarif qui était de base caché n'était pas celui de la variante la moins chère. J'avais modifié la vue listing&#95;price pour que le prix le plus bas soit afficher, mais forcément, ma modif bloque l'affichage dynamique du nouveau prix une fois les options sélectionnées. Donc je me suis dit que j'allais faire la modif en amont, à la ligne $this-&gt;row = &amp;$this-&gt;element; juste avant le loadTemplate du listing&#95;price dans la vue produit.  mais là je coince car lorsque je remplace this-&gt;row par la variante la moins chère, tout ce dont la vue listing&#95;price à besoin n'est pas chargé  j'aurais aimé faire quelque chose du type :  Mais voilà, il manque plein d'infos dans this-&gt;row par rapport à this-&gt;element  je sais que c'est un peu tordu, j'espère avoir été le plus clair possible  Merci d'avance")*

Bonjour,

merci pour votre réponse.

Malheureusement c'est ce que j'avais essayé, le "à partir de" que je génère dans le listing_price avec le code suivant ne s'affiche plus Code:

if(!empty($this-&gt;row-&gt;variant_ids) OR !empty($this-&gt;row-&gt;variants)){ echo '&lt;span class="price_intro"&gt;A partir de&lt;/span&gt;'; }

Pour le "à partir de", mon code me dit qu'il manque $this-&gt;row-&gt;variants vu que je n'ais pas tout le produit dans this-&gt;row
J'ai donc essayé de charger les variants $this-&gt;row-&gt;variants = $productClass-&gt;loadProductVariants($this-&gt;row); le résultat est NULL :S

Le plus embêtant, les listes déroulantes de caractéristiques disparaissent aussi car, d'apèrs mon var_dump, le this-&gt;element n'a plus les caractéristiques, pourtant je ne modifie jamais le this-&gt;element, juste le this-&gt;row que je remets en place après ma manip en plus, voici le code actuel ainsi que le lien vers la vue avec ce code :
Code:

if ($this-&gt;params-&gt;get('show_price') &amp;&amp; (empty($this-&gt;displayVariants['prices']) &#124;&#124; $this-&gt;params-&gt;get('characteristic_display') != 'list')) { $productClass = hikashop_get('class.product'); $currencyClass = hikashop_get('class.currency'); if($this-&gt;row-&gt;product_type == 'main'){ $db-&gt;setQuery('SELECT * FROM #__hikashop_product WHERE product_published = 1 AND product_parent_id = '.$this-&gt;row-&gt;product_id.' ORDER BY product_sort_price LIMIT 1'); $this-&gt;row = $db-&gt;loadObject(); $this-&gt;row = $productClass-&gt;getProduct($this-&gt;row-&gt;product_id); $ids = array($this-&gt;row-&gt;product_id); $currencyClass-&gt;getPrices($this-&gt;row, $ids, null, null, null, null); $this-&gt;row-&gt;variants = $productClass-&gt;loadProductVariants($this-&gt;row); } elseif($this-&gt;row-&gt;product_type == 'variant'){ $db-&gt;setQuery('SELECT * FROM #__hikashop_product WHERE product_published = 1 AND product_parent_id = '.$this-&gt;row-&gt;product_parent_id.' ORDER BY product_sort_price LIMIT 1'); $this-&gt;row = $db-&gt;loadObject(); $this-&gt;row = $productClass-&gt;getProduct($this-&gt;row-&gt;product_id); $ids = array($this-&gt;row-&gt;product_id); $currencyClass-&gt;getPrices($this-&gt;row, $ids, null, null, null, null); $this-&gt;row-&gt;variants = $productClass-&gt;loadProductVariants($this-&gt;row); } // $this-&gt;row = $this-&gt;element; // echo'&lt;pre&gt;';var_dump($this-&gt;row);echo'&lt;/pre&gt;'; $this-&gt;setLayout('listing_price'); echo $this-&gt;loadTemplate(); $this-&gt;row = $this-&gt;element;

[ cebonat.gixia.fr/fr/tous-les-produits/pr...l-inox-acmatpoussinv](https://cebonat.gixia.fr/fr/tous-les-produits/produit/143-poussoir-a-viandes-professionnel-multifonction-vertical-inox-acmatpoussinv)

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA1Mzk4LWxvYWQtZnVsbC1wcm9kdWN0P3RtcGw9bWFya2Rvd24=) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

- **[nicolas](/forum/user/63-nicolas "View nicolas's Profile")**
- [![nicolas's Avatar](https://www.hikashop.com/media/kunena/avatars/resized/size144/users/avatar63.png?1793428657)](/forum/user/63-nicolas "View nicolas's Profile")
- [ Away](/forum/user/63-nicolas)

Less More

- Posts: 86363
- Thank you received: 14297
-
-

3 years 11 months ago [\#346852](#346852) by [nicolas](/forum/user/63-nicolas "View nicolas's Profile")  Replied by *[nicolas](/forum/user/63-nicolas "View nicolas's Profile")* on topic *[Load full product](/forum/5-support-en-francais-french-support-/905398-load-full-product#346852 "Bonjour,  j'arrête de chercher, je pose la question :silly:  Je cherche à charge un produit complet tel qu'il est dans la vue product dans la variable this-&gt;element, mais lorsque j'utiliser getProduct, je n'ai pas tout, il manque les variantes, les prices, etc, il n'y a que les infos de ligne de la table product et les images.  Un peu comme la fonction loadFullCart qui donne toutes les données liées.  De manière général, cette fonction me manque souvent, donc on peut mettre le contexte à part mais je le donne quand même au cas ou  Le contexte : Je suis dans une vue produit, avec les options de variantes en listes déroulantes, mon client souhaite que le tarif &quot;à partir de&quot; s'affiche avant d'avoir sélectionné les options. Le tarif qui était de base caché n'était pas celui de la variante la moins chère. J'avais modifié la vue listing&#95;price pour que le prix le plus bas soit afficher, mais forcément, ma modif bloque l'affichage dynamique du nouveau prix une fois les options sélectionnées. Donc je me suis dit que j'allais faire la modif en amont, à la ligne $this-&gt;row = &amp;$this-&gt;element; juste avant le loadTemplate du listing&#95;price dans la vue produit.  mais là je coince car lorsque je remplace this-&gt;row par la variante la moins chère, tout ce dont la vue listing&#95;price à besoin n'est pas chargé  j'aurais aimé faire quelque chose du type :  Mais voilà, il manque plein d'infos dans this-&gt;row par rapport à this-&gt;element  je sais que c'est un peu tordu, j'espère avoir été le plus clair possible  Merci d'avance")*

Ce n'est pas comme ça qu'il faut "remettre en place".
Il faut faire une copie de $this-&gt;row avant votre code dans une variable temporaire.
Comme ceci: Code:

$tmp = hikashop_copy($this-&gt;row); // ... votre code ... $this-&gt;row = $tmp;

Et pour loadProductVariants il ne faut pas écrire
$this-&gt;row-&gt;variants = $productClass-&gt;loadProductVariants($this-&gt;row);
mais:
$productClass-&gt;loadProductVariants($this-&gt;row);

Enfin, pour Code:

if(!empty($this-&gt;row-&gt;variant_ids) OR !empty($this-&gt;row-&gt;variants)){ echo '&lt;span class="price_intro"&gt;A partir de&lt;/span&gt;'; }

, dans les listings, vous avez $this-&gt;row-&gt;has_options qui contient l'information de savoir si le produit a des variantes/options ou non. Cela permet de savoir s'il faut afficher le bouton "add to cart" ou le bouton "choose options". Peut être que vous pourriez utiliser cela plutôt que d'essayer de recharger les variantes ? Par exemple: Code:

if(!empty($this-&gt;row-&gt;has_options) OR !empty($this-&gt;row-&gt;variant_ids) OR !empty($this-&gt;row-&gt;variants)){ echo '&lt;span class="price_intro"&gt;A partir de&lt;/span&gt;'; }

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA1Mzk4LWxvYWQtZnVsbC1wcm9kdWN0P3RtcGw9bWFya2Rvd24=) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

- **[Minie](/forum/user/43321-minie "View Minie's Profile")**
- [![Minie's Avatar](https://www.hikashop.com/media/kunena/avatars/resized/size144/users/avatar43321.jpg)](/forum/user/43321-minie "View Minie's Profile") Topic Author
- [ Offline](/forum/user/43321-minie)

Less More

- Posts: 511
- Thank you received: 37
-
-
-

3 years 11 months ago [\#346926](#346926) by [Minie](/forum/user/43321-minie "View Minie's Profile")  Replied by *[Minie](/forum/user/43321-minie "View Minie's Profile")* on topic *[Load full product](/forum/5-support-en-francais-french-support-/905398-load-full-product#346926 "Bonjour,  j'arrête de chercher, je pose la question :silly:  Je cherche à charge un produit complet tel qu'il est dans la vue product dans la variable this-&gt;element, mais lorsque j'utiliser getProduct, je n'ai pas tout, il manque les variantes, les prices, etc, il n'y a que les infos de ligne de la table product et les images.  Un peu comme la fonction loadFullCart qui donne toutes les données liées.  De manière général, cette fonction me manque souvent, donc on peut mettre le contexte à part mais je le donne quand même au cas ou  Le contexte : Je suis dans une vue produit, avec les options de variantes en listes déroulantes, mon client souhaite que le tarif &quot;à partir de&quot; s'affiche avant d'avoir sélectionné les options. Le tarif qui était de base caché n'était pas celui de la variante la moins chère. J'avais modifié la vue listing&#95;price pour que le prix le plus bas soit afficher, mais forcément, ma modif bloque l'affichage dynamique du nouveau prix une fois les options sélectionnées. Donc je me suis dit que j'allais faire la modif en amont, à la ligne $this-&gt;row = &amp;$this-&gt;element; juste avant le loadTemplate du listing&#95;price dans la vue produit.  mais là je coince car lorsque je remplace this-&gt;row par la variante la moins chère, tout ce dont la vue listing&#95;price à besoin n'est pas chargé  j'aurais aimé faire quelque chose du type :  Mais voilà, il manque plein d'infos dans this-&gt;row par rapport à this-&gt;element  je sais que c'est un peu tordu, j'espère avoir été le plus clair possible  Merci d'avance")*

Bonjour,

merci pour votre réponse.

pour la "remise en place", ca fonctionne nickel merci beaucoup !

Pour les variantes, la formulation $productClass-&gt;loadProductVariants($this-&gt;row); etait la première que j'ia testée, mais this-&gt;row n'a pas de this-&gt;row-&gt;variants alors j'ai testé comme ca, là je viens de tester à nouveau avec la bonne façon mais sans succès, mais la remise en place de this-&gt;row à résolu le problème de la disparition des listes déroulantes :silly:

pour le has_options, il fait partie des présents dans this-&gt;element et absents dans this-&gt;row au même titre que les variantes mais ce n'est pas grave, je peux tout aussi bien faire une requête sql sale de recherche de variantes à partir du product_id à cet endroit, je ne sus plus à ca près du moment que ca fonctionne, et ca fonctionne, youpi !

Merci beaucoup, Nicolas toujours au top ![:)](/media/kunena/emoticons/3.png ":)")

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA1Mzk4LWxvYWQtZnVsbC1wcm9kdWN0P3RtcGw9bWFya2Rvd24=) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

Board Categories HikaShop Install &amp; Update Product &amp; Category Display Content Creation Sales and Orders Orders management Reports &amp; Statistics Customers Checkout Payment Methods Shipping Methods Import &amp; Export (CSV, XLS…) Specific Features Affilation Taxes Wishlist Vote Carousel &amp; Slider Mass Actions Filters &amp; Search Discount &amp; Coupon Feature Request Integrations Showcase General Talk about HikaShop Development HikaShop 3.0 Beta Translation Commercial Jobs HikaShop Components HikaMarket Market: Feature requests Market: How to? Market: Bug Report HikaSerial General talk about HikaSerial Serial: Bug Report Serial: How to? Support en Français de HikaSerial (French Support) HikaSubscription HikaAuction Auction: Feature requests Auction: How to? Auction: Bug report Hikashop around the world Support en Français (French Support) Russian FAQ. Курс выживания с Hikashop. Частые вопросы и о Расширения Hikashop Наши сайты на Hikashop 日本語版サポート(Japanese Support) Thai German Archives Bug Report How to?

[](/forum/topics/feed/mode-topics?format=feed&type=rss)

Time to create page: 0.065 seconds

[Powered by](/forum/credits) [Kunena Forum](https://www.kunena.org)
