
CyBeRCeD
Members-
Posts
32 -
Joined
-
Last visited
CyBeRCeD's Achievements
Newbie (1/14)
0
Reputation
-
Merci de me proposer ton aide. En fait pour le moment je me penchais du coté de XML donc je n'ai pas fait grand chose ^^. J'ai juste une liste normale : ></pre> <ul> dans mon fichier tpl que je souhaiterai donc générer à l'aide d'infos contenus soit dans un fichier XML externe, soit de la Bdd comme tu m'indique
-
ben en fait mon module permet la personalisation de cartes de visites. Et cette liste que je souhaite récupérer contient les différents modèles de bases que l'utilisateur peut choisir. Depuis l'admin, je souhaite donc pouvoir rajouter des modèles, en ajouter, changer l'ordre d'apparition, etc. Mais en fait je pense que le solution la plus approprié et de mettre mes modèles dans un fichiers XML qui pourra être lu en front office tout en pouvant être modifié en backoffice. Qu'en pensez vous ?
-
Le problème c'est que non. regardez j'ai 2 occurences d'un même produit mais qui sont différents car ils sont différenciés par un customization_id (image jointe) Je réalise dans ma page shopping-cart.tpl une boucle me permettant d'afficher tout les attributs de tout mes produits : global $cart; foreach($cart->getProducts() as $unproduit) { foreach ($unproduit as $key => $value) { echo $key." : ".$value." "; } } Et voici ce qui me ressort : Prestashop considère mes 2 produit comme un seul, et l'unique_id:20111 est en fin de compte toujours le même. normal vu que ce sont tout les deux des occurrences du même produit, seulement mon module fait en sorte que mes produit, soient TOUS différents. Sans customization_id, ils ne sont pas différentiables (enfin à ce que j'ai pu comprendre lors de mes tests). Donc peut être que je n'ai pas compris la solution que vous m'apportez. Si je suis dans ce cas et que j'ai mal compris, je m'en excuse. Mais sinon pouvez vous me dire si oui ou non il est possible de faire ce que je désire. Cela doit être une seule ligne à modifier dans le product.php ou le product.tpl mais impossible de trouver. Il me faut juste enlever une condition qui indique que si il existe des données envoyés par post par le formulaire de personnalisation d'un produit, un customization_id est ajouté au produit. Je pense que tout se passe dans la fonction : function textRecord(Product $product, Cart $cart) { global $errors; if (!$fieldIds = $product->getCustomizationFieldIds()) return false; $authorizedTextFields = array(); foreach ($fieldIds AS $fieldId) if ($fieldId['type'] == _CUSTOMIZE_TEXTFIELD_) $authorizedTextFields[intval($fieldId['id_customization_field'])] = 'textField'.intval($fieldId['id_customization_field']); $indexes = array_flip($authorizedTextFields); foreach ($_POST AS $fieldName => $value) if (in_array($fieldName, $authorizedTextFields) AND !empty($value)) { if (!Validate::isMessage($value)) $errors[] = Tools::displayError('Invalid message'); else $cart->addTextFieldToProduct(intval($product->id), $indexes[$fieldName], htmlentities($value, ENT_COMPAT, 'UTF-8')); } elseif (in_array($fieldName, $authorizedTextFields) AND empty($value)) $cart->deleteTextFieldFromProduct(intval($product->id), $indexes[$fieldName]); } et plus particulièrement sur cette ligne : if (!$fieldIds = $product->getCustomizationFieldIds()) return false; Mais rien à faire je n'y parvient pas --' Merci encore pour le temps que vous m'accordez.
-
Ok merci beaucoup pour le lien très instructif. Mais ce que j'aimerais savoir, c'est par exmple comment récupérer le contenu d'une liste ( ) contenu dans mon fichier tpl du module, l'afficher dans le backoffice, puis à l'aide d'un formulaire et d'un champ texte par exemple, ajouter ce dernier au contenu de la liste dans le tpl ? Voilà ce que j'aimerais pouvoir arriver à faire. Merci d'avance
-
Bonjour à tous, j'ai créé un module et j'aimerais bien savoir comment faire en sorte qu'il soit configurable via le back office. Je sais déjà que ce contenu doit être ajouter à ma fonction public function getContent() { } de mon fichier php du module qui ma déjà ajouté un lien dans le backoffice pour configurer ce dernier. Mais comment le remplir, que mettre dedans ? Voilà, ma question est de savoir s'il existe un tutoriel pour m'aider ou bien si quelqu'un aurait la gentillesse de m'expliquer un minimum "les bases", ce qu'il y a à savoir, etc. Merci d'avance
-
bonjour, merci de vous interrésser à mon problème. En fait, j'ai créer un module qui permet de personnaliser des cartes de visites pour les professionnels. Mon module contient un formulaire pour renseigner des champs, une barre d'outil pour personnaliser ces champs (couleur, gras italique, police...) et donc un bouton qui me permet grâce à de l'ajax, d'appeler une fonction PHP (qui utilise la librairie GD) pour créer l'aperçu de ma carte afin que l'utilisateur sache ce qu'il va acheter. Il peut donc personnaliser au maximum sa carte et c'est ainsi que chaque produit ajouté au panier est différent, même si c'est toujours pour prestashop, le même produit de la même catégorie... J'ai donc ajouté une table à ma BDD où, lors de l'ajout d'un produit au panier, enregistre toutes les infos nécessaires (si tel ou tel champ est en gras, sa couleur, taille...) dans une enregistrement (ou mon identifiant est ce fameux customization_id) pour, lors de la confirmation de la commande, appeler une fonction PHP me permettant de générer un PDF que j'envoie à mon imprimeur. J'ai donc résolu un de mes problèmes lorsque j'ai découvert que Prestashop géré de lui même des numéro de customization qui suivent le produit jusqu'à la confirmation de la commande (pour peu de modifier quelques bout de codes par ci par là. Et une fois la commande confirmée, j'effectue une requete SQL me permettant de lier mon produit customizer avec le numero de la commande (id_order) que l'on récupère une fois la commande confirmée. Ainsi à l suite de tout cela, je peut récupérer un peu où je veux (dans l'historique des commandes par exemple) pour chaque numéro de commande, telle ou telle carte qui a été commandé et ainsi afficher les miniatures des visuels au client (cela parle toujours plus que des numéros). Voilà, j'espère que vous avez saisi le sens de mon problème. Il suffit juste que je trouve un moyen de garder ce customization_id, sans pour autant avoir des champs de personnalisation. Car la seule solution que j'ai trouvé, c'est de cacher mon formulaire que propose Prestashop pour personnaliser mon produit, de mettre une valeur dans un champ caché grâce à du javascript, puis d'envoyer le formulaire. Le soucis majeur est donc que je suis obligé de recharger la page alors que mon module est optimisé à la base pour fonctionner au maximum avec de l'ajax. Merci d'avance pour votre aide, en espérant que vous aurez une solution à m'apporter.
-
Bonjour, j’utilisais un champ texte de personalisation pour garder une référence d’un produit personnalisé une fois ce dernier dans mon panier. Jusqu‘à ce que je découvre que Prestashop gérait tout seul un “customizationId” pour chaque produit qui s’incrémentait tout seul (on peut le voir dans le lien de suppression ou d’ajout du produit) Donc j’ai refais tout mon système confiant en pensant avoir trouvé la solution la plus simple et la plus efficace de mémoriser certaines informations du produit pour enregistrer des informations dans ma Bdd en indiquant comme id ce “customizationId”. J’ai donc supprimé mes champs de personnalisation “TextFields” et là plus de “customizationId”. Existe t’il donc un moyen afin de conserver la gestion de ce customizationId sans avoir de champ de personnalisation ? Merci d'avance
-
:'( Il doit bien y avoir un bout de code à modifier pour que cet attribut de customization n'apparaisse pas que si il existe un champ de personnalisation rempli ? Dans product.php il y a bel et bien cette fonction : function textRecord(Product $product, Cart $cart) { global $errors; if (!$fieldIds = $product->getCustomizationFieldIds()) return false; $authorizedTextFields = array(); foreach ($fieldIds AS $fieldId) if ($fieldId['type'] == _CUSTOMIZE_TEXTFIELD_) $authorizedTextFields[intval($fieldId['id_customization_field'])] = 'textField'.intval($fieldId['id_customization_field']); $indexes = array_flip($authorizedTextFields); foreach ($_POST AS $fieldName => $value) if (in_array($fieldName, $authorizedTextFields) AND !empty($value)) { if (!Validate::isMessage($value)) $errors[] = Tools::displayError('Invalid message'); else $cart->addTextFieldToProduct(intval($product->id), $indexes[$fieldName], $value); } elseif (in_array($fieldName, $authorizedTextFields) AND empty($value)) $cart->deleteTextFieldFromProduct(intval($product->id), $indexes[$fieldName]); } Mais apparemment ce n'est pas ici qu'il est indiqué d'ajouter le custom_id s'il existe un ou plusieurs texfields. Si quelqu'un aurait la gentillesse de se pencher ne serait-ce quelques secondes sur mon problème... Merci encode d'avance
-
Bonjour à tous, en ce début de semaine, je recherche comment peut-on tester les paiement via paypal "virtuellement" mais en arrivant quand même au bout de la transaction (paypal/confirmation.php) Car j'ai testé via la solution sandbox en créant des comptes virtuels et en modifiant le mode du module paypal en sandbox. Dans mes comptes virtuels j'arrive bien au bout de la transaction car je reçois bel et bien les email "virtuels"me précisant que la transaction s'est bien déroulé, que le paiement a été bien effectuée etc. Car en fait j'ai besoin d'enregistrer quelques informations dans ma base de donnée à cette étape et j'aurais donc besoin de tester tout cela afin de pouvoir mettre tout cela en ligne. Merci d'avance à ceux ou celles qui m'apporteront des solutions.
-
Bonjour à tous, Au niveau de la commande (order.php?step=3), 3 options se présentent à moi :lors d'un clic sur paiement par chèque ou virement bancaire, les lien me dirige vers une page interne donc pas de problème mais pour le paiement via Paypal, le bouton appelle la validation du formulaire caché contenant toutes pleines d'infos. Ces dernières sont envoyer en POST. Il a ainsi pour effet de rediriger vers le site de Paypal. Mais j'aurais besoin d'avoir accès à certaines infos transmises par ce formulaire après le paiement via Paypal. Ne pouvant pas effectuer de tests en local, ma question est donc de savoir si après le règlement effectué (j'imagine que cela me redirige sur la page "paypal/confirmation.php", si toutes ces infos sont retransmises automatiquement par Paypal jusqu'à la page de confirmation ou si la réponse est non, comment faire s'il vous plait ? Merci d'avance pour vos réponses
-
Insérer code PHP sur un produit - Personnalisation
CyBeRCeD replied to mat250's topic in PrestaShop pour les développeurs
je suis en train de développer quelque chose du même genre que toi, j'ai créé un module qui permet de créer des cartes de visite en ligne à l'aide champs de personnalisation. Et j'affiche l'aperçu dans une image créée à l'aide de la librairie gd en php. Ma page php est appelé par une fonction ajax. J'ai intégrer ce module au hook productfooter car je n'ai pas trouvé de hook plus adaptés et que personne ne répond à mes posts donc voilà, si je peut t'aider, j'ai une expérience de 3semaines prestashop, c'est pas grand chose mais j'ai bien galéré et appris pleins de choses donc voilà -
en fait, c'est bon en bidouillant la fonction displayPayment() de order.php, j'ai réussi à transmettre les variables de customization. Si cela peut aider quelqu'un : //--------------------------rajouté pour transmettre les champs de personnalisation $summary = $cart->getSummaryDetails(); $customizedDatas = Product::getAllCustomizedDatas(intval($cart->id)); Product::addCustomizationPrice($summary['products'], $customizedDatas); $smarty->assign($summary); $smarty->assign(array('customizedDatas' => $customizedDatas,)); //------------------------------------------CeD Merci quand même