- Posts: 163
- Thank you received: 11
Donner un prix aux fichiers
-- HikaShop version -- : 2.3.1 + Hikamarket 1.4.1
-- Joomla version -- : 3.2.2
-- PHP version -- : 5.4.22
-- Browser(s) name and version -- : Firefox 27.0.1
-- Error-message(debug-mod must be tuned on) -- : aucun message d'erreur
Bonjour,
J'ai une demande un peu particulière aujourd'hui, ne pouvant donner de prix aux différents fichiers téléchargeables dans un même produit, j'ai besoin de leur donner un prix dans la vue user/downloads
Pour cela, dans ma vue user/dowloads, je dois compter le nombre de fichiers .pdf contenu dans chaque produit acheté.
Je dois ensuite diviser le prix du produit par le nombre de fichier .pdf qu'il contient.
Pourriez vous m'indiquer une façon de faire cela proprement ?
Je vous remercie par avance pour votre aide !
Cordialement, Nossibé
Please Log in or Create an account to join the conversation.
- Posts: 12953
- Thank you received: 1778
La solution serai d'utiliser les caractéristiques et d'assigner un fichier par variante et donc de leurs attribuer différents prix en fonction du fichier.J'ai une demande un peu particulière aujourd'hui, ne pouvant donner de prix aux différents fichiers téléchargeables dans un même produit
Concernant le prix du produit vous le trouverez via la variable :Pour cela, dans ma vue user/dowloads, je dois compter le nombre de fichiers .pdf contenu dans chaque produit acheté.
Je dois ensuite diviser le prix du produit par le nombre de fichier .pdf qu'il contient.
Please Log in or Create an account to join the conversation.
Je vais étudier cette solution de près !
Cordialement, Gaëtan
Please Log in or Create an account to join the conversation.
J'en reviens donc à ma première idée qui est de compter le nombre de fichiers payants puis de diviser le prix de l'objet par le nombre de téléchargements disponibles pour cet objet.
En attendant mieux, j'ai ajouter un custom field afin d'indiquer manuellement le nombre de fichiers téléchargeables pour chaque produit (table product). Pouvez-vous m'indiquer comment récupérer la valeur de ce custom field pour chaque produit dans ma vue user/downloads ?
Je vous remercie !
Cordialement, Nossibé
Please Log in or Create an account to join the conversation.
Je pense qu'il faut se placer dans un foreach sur "$downloadFile->orders" puis faire un loadFullOrder sur chaque orders pour récupérer tous les produits, et récupérer les produits complets afin d'avoir la valeur de la custom field.
Quelque chose comme:
Please Log in or Create an account to join the conversation.
ça ne marche pas, peut-être est-ce parce que $orderClass n'est défini nul part ?
Cordialement, Nossibé
Please Log in or Create an account to join the conversation.
$orderClass est défini au début du code donné par Xavier, en revanche il manquait un $, essayez ceci:
Et n'oubliez pas de remplacer CUSTOM_FIELD_NAME par le nom de votre custom field!
Please Log in or Create an account to join the conversation.
Voici mon code actuel qui n'affiche pas $nbr_payant ^^
product_fichierspayants étant le nom du champ de mon custom field.
J'ai testé de définir la variable $nbr_payant par l'ajout de $nbr_payant = 0; en début du code ci-dessus, mais ça ne change rien. Voyez-vous ce que j'ai mal fait ?
Je vous remercie pour votre aide,
Cordialement, Nossibé
Please Log in or Create an account to join the conversation.
Avez vous une quelconque erreur affichée ?
Il faudrait faire un debug de votre code, vérifier bien les valeurs récupérées dès le début, vérifiez si vous passez bien dans tous les "if", etc.
Comme ce n'est pas un disfonctionnement d'HikaShop mais une customisation et que nous avons beaucoup de support ces temps ci, nous ne pouvons consacrer beaucoup de temps pour ce genre de situations. Merci de votre compréhension
Please Log in or Create an account to join the conversation.
Je comprends tout à fait, mais ça dépasse mes compétences, aussi je poste quand même le résultat de mon dernier test en espérant que vous pourrez m’aiguiller vers la bonne voie.
J'ai repris le fichier d'origine de user/downloads (sans les modifications que j'avais apporté.
Voici donc le fichier complet de la vue :
J'obtiens un message d'erreur (répété pour chaque fichier) :
Notice: Undefined property: stdClass::$product_fichierspayants in /templates/destinyfx/html/com_hikashop/user/downloads.php on line 121
Je vous remercie,
Cordialement, Nossibé
Please Log in or Create an account to join the conversation.
Etes vous sur que les produits en question possède quelque chose dans ce champ?
Je vous conseil de faire un var_dump($nbr_payant) juste avant les ligne ou vous utiliser la variable product_fichierspayants de façon a visualiser l'objet et voir si le champ est présent ou non.
Please Log in or Create an account to join the conversation.
Le var_dump retourne null.
J'ai vérifié la présence d'une entrée dans le champ produit/product_fichierspayants et une valeur est bien présente pour l'un des produits téléchargeables, j'ai modifié le niveau d'accès du champ à "Tous", j'ai supprimé la commande puis recommandé l'article pour être sûre que les nouveaux paramètres du champs étaient bien pris en compte... Mais j'ai toujours une valeur NULL pour le var_dump.
Voici le paramétrage de mon champ :
Je vous remercie encore !
Cordialement, Nossibé
Please Log in or Create an account to join the conversation.
- Posts: 12953
- Thank you received: 1778
Avez vous bien initialisé des valeurs pour via l'option "Fichiers payants" de la page de configuration de vos produits ?
Please Log in or Create an account to join the conversation.
oui le champ "Fichiers payants" est bien rempli dans le formulaire de configuration du produit, il contient la valeur "9".
Cordialement, Nossibé
Please Log in or Create an account to join the conversation.
La page de download permet d'accéder à une partie de la commande et à ses produits (appelés aussi : item).
Pour être un petit peu plus claire : les champs personnalisés de type "product" ne sont pas affichés ou chargés.
Que cela doit de base dans la base "download" ou en chargeant entièrement la commande.
Il faut donc charger les produits ou les données de la table product ; afin de récupérer les valeurs du champs personnalisé.
Cordialement,
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Please Log in or Create an account to join the conversation.
Donc en gros si je veux intégrer mon champ personnalisé je dois hacker le fichier /components/com-hikashop/views/user/view.html.php pour joindre la table product à la requête en ligne 659...
C'est un peu dommage d'avoir des champs personnalisés mais de ne pas pouvoir les appeler dans toutes les vues.
Voici la modification effectuée, pouvez-vous me dire si c'est correcte s'il vous plait ?
ligne 653 :
Je vous remercie encore.
Cordialement, Nossibé
Please Log in or Create an account to join the conversation.
Vous pouvez les appelés dans toutes les vues...Il suffit d'écrire le code nécessaire pour charger les données qui vont bien. De notre coté, nous avons ajouter par défaut l'affichage des champs dans les vues où cela nous semblait logique.
Concernant votre modification, oui, c'est correct comme cela, mais si vous voulez éviter de hacker le fichier view.html.php, alors il suffit d'utiliser cela dns votre vue:
Please Log in or Create an account to join the conversation.
J'ai testé le code que vous m'avez fourni et voici les messages d'erreur obtenus :
Notice: Undefined variable: p in /templates/destinyfx/html/com_hikashop/user/downloads.php on line 99
Notice: Trying to get property of non-object in /templates/destinyfx/html/com_hikashop/user/downloads.php on line 99
et
Notice: Trying to get property of non-object in /templates/destinyfx/html/com_hikashop/user/downloads.php on line 138
Si je comprends bien, la class.product n'est pas chargée...
vue user downloads :
Cordialement, Nossibé
Please Log in or Create an account to join the conversation.
Ces erreurs n'ont rien à voir avec class.product.
Elles signifie que la variable $p n'existe pas.
Mon code suppose que la variable $p contient les infos du produit dans la commande. Je vous ai donné un exemple à adapter à vos besoins, pas la solution finale à copier/coller.
Je me suis basé sur votre code de ce post:
www.hikashop.com/forum/5-support-en-fran...fichiers.html#158830
Ce code contient bien la variable $p et donc c'est là ou vous utilisez $p dans votre code pour qu'au lieu de chercher la valeur du champs dans le produit de la commande, vous le cherchiez dans les infos principales du produit.
En clair, il faut mettre mon cote à la place de la ligne:
$nbr_payant = $p->product_fichierspayants;
Et bien sûr, au lieu de mon code:
echo $productData->product_fichierspayants;
vous voulez:
$nbr_payant = $productData->product_fichierspayants;
Please Log in or Create an account to join the conversation.
Merci pour votre patience !!!
Cordialement, Nossibé
Please Log in or Create an account to join the conversation.