Jump to content

pixAN

Members
  • Posts

    176
  • Joined

  • Last visited

Everything posted by pixAN

  1. Bonjour, je chercha à ajouter dans l'administration et dans les catégories un champs personnalisé en wysiwg. Mais seulement depuis cette version (1.7.6), la méthode a changé, l'ajout de champs se faisant avec Symfony, on ne peut plus overrider "AdminCategoriesController.php" car le fichier de base n'existe plus. J'ai trouvé un tuto mais je n'arrive pas à le faire fonctionner (https://www.h-hennes.fr/blog/2019/08/05/prestashop-1-7-ajouter-des-champs-dans-un-formulaire-dadministration/) Quelqu'un peut -il m'aider ? j'ai crée manuelle une colonne "Color" dans la base de données (table ps_category-lang) puis suivi le tutoriel mais je n'arriva pas à enregistrer la valeur dans la table. Dans la fonction updateData, j'ai ajouté : $cat = new Category((int)$params[‘id’]); $cat->Color = $data[‘color’]; $cat->update(); Mais prestashop retourne un erreur : Une erreur inattendue s’est produite. [PrestaShopDatabaseException code 0] J'ai également overrider la class "Category" Merci pour votre retour
  2. Bonjour, J'ai installer le module sendinblue sur mon prestashop (1.6) , il fonctionne bien quand le client rentre son email dans le blocknewsletter dans le footer Cependant j'utilise aussi une pop up qui permet de s'inscire à la newsletter ( j'utilise le formulaire de block newsletter dans cette popup) mais malheureusement cela ne fonctionne pas avec sendinblue : aucune adresse n'est enregistrer dans sendinblue, par contre elles sont bien enregistré dans le module newsletter. Avez-vous une idée pour que cela fonctionne? Merci pour votre retour
  3. Personne n'a utilisé ces 2 modules ? Merci pour vos retours d'expériences
  4. Bonjour, Je souhaite utiliser prestashop 1.7. J'ai entendu dire qu'il y a des modules qui été natifs sur prestashop 1.6 mais qu'ils ne le sont plus sur la version 1.7. Est-ce exacte et si oui lesquels ? (ex: modules parrainages, fidélité,...) Merci pour votre retour
  5. Merci pour vos réponses mais je souhaite plutôt m'orienter sur 1 des 2 cités. Mais je ne sais pas lequel choisir
  6. Bonjour, Je souhaite installer sur ma boutique un module de chat mais j'hésite en être 2 modules : Online Chat : https://addons.prestashop.com/fr/support-chat-online/22666-online-chat.html Live chat Pro : https://addons.prestashop.com/fr/support-chat-online/18967-live-chat-pro.html Connaissez-vous et/ou utilisez-vous un de ses modules ? J'aimerais lesquels des 2 est le meilleur. Merci pour vos retours
  7. Bonjour, Je souhaite pouvoir avoir un prix dynamique sur la remise sur quantité dans la liste des produits. Le prix est bien dynamique dans la fiche produit mais comment faire pour qu'il le soit aussi dans la liste des produits (product-list.tpl) ? Merci pour vos retours
  8. Bonjour, J'ai besoin de faire une condition dans le récapitulatif du panier selon la valeur d'une déclinaison. Seulement si je fais un print_r de : $this->context->cart->getProducts(); J'obtient : [attributes] => couleur : rouge, taille : 2 [attributes_small] => rouge, 2 Et dans le fichier tpl , j'ai : couleur : rouge, taille : 2 Je voudrais faire une condition en disant : si la couleur choisie est rouge alors on affiche quelque chose. Savez-vous comment je dois procéder? J'ai essayé un override de la classe Cart.php en créant 2 nouvelles fonctions : getCustomProducts : à l'intérieur j'appelle la fonction : Cart::cacheSomeCustomAttributesLists($pa_ids, $this->id_lang); ou pour le moment j'ai juste modifier pour tester : foreach ($result as $row) { self::$_attributesLists[$row['id_product_attribute'].'-'.$id_lang]['attributes'] .= $row['id_attribute_group'].' k '.$row['public_group_name'].'l '; self::$_attributesLists[$row['id_product_attribute'].'-'.$id_lang]['attributes_small'] .= $row['attribute_name'].', '; } En mettant un 'k' et un 'l' , simplement pour voir si cela changeait quelque chose, mais la modification n'est pas prise en compte même en vidant le cache. Car j'imagine que cette fonction que je dois modifier? Merci pour vos retours
  9. Bonjour j'ai un bug étrange dans mes fiches produit quand j'utilise la remise sur quantité? Si par exemple j'ajoute un prix dégressif pour une quantité de 2, le prix s'affichait en négatif, bon j'ai résolu ce problème. Par contre j'ai un autre bug , dans ma fiche produit j'ai 3 onglets (fiche technique, description et remise sur quantité), et bizarrement le prix est dynamique seulement quand je suis dans l'onglet "remise sur quantité" ... Pour le prix devienne dynamique quand je clique sur les autres onglets je dois ajouter dans le code et dans chaque onglet ce bout de code : <div id="quantityDiscount" class="tab-pane"> {foreach from=$quantity_discounts item='quantity_discount' name='quantity_discounts'} {if $quantity_discount.price >= 0 || $quantity_discount.reduction_type == 'amount'} {$realDiscountPrice=$quantity_discount.base_price|floatval-$quantity_discount.real_value|floatval} {else} {$realDiscountPrice=$quantity_discount.base_price|floatval*(1 - $quantity_discount.reduction)|floatval} {/if} <table class="std table-product-discounts"> <tr class="quantityDiscount_{$quantity_discount.id_product_attribute}" data-real-discount-value="{convertPrice price = $realDiscountPrice}" data-discount-type="{$quantity_discount.reduction_type}" data-discount="{$quantity_discount.real_value|floatval}" data-discount-quantity="{$quantity_discount.quantity|intval}"> </tr></table>{/foreach}</div> Voici aussi le code entier pour les onglets <script type="text/javascript"> $(document).ready(function(){ $('.more_info_block .page-product-heading li:first, .more_info_block .tab-content section:first').addClass('active'); }); </script> <ul class="nav nav-tabs tab-info page-product-heading"> {if isset($features) && $features} <li class="active"><a href="#tab3" data-toggle="tab">{l s='Data sheet'}</a></li> {/if} {if $product->description} <li><a href="#tab2" data-toggle="tab">{l s='More info'}</a></li> {/if} {if (isset($quantity_discounts) && count($quantity_discounts) > 0)} <li><a href="#quantityDiscount" data-toggle="tab">{l s='Volume discounts'}</a></li> {/if} {if isset($HOOK_PRODUCT_TAB_CONTENT) && $HOOK_PRODUCT_TAB_CONTENT} {$HOOK_PRODUCT_TAB} {/if} {if isset($accessories) && $accessories} <li><a href="#tab4" data-toggle="tab">{l s='Accessories'}</a></li> {/if} {if (isset($product) && $product->description) || (isset($features) && $features) || (isset($accessories) && $accessories) || (isset($HOOK_PRODUCT_TAB) && $HOOK_PRODUCT_TAB) || (isset($attachments) && $attachments) || isset($product) && $product->customizable} {if isset($attachments) && $attachments} <li ><a href="#tab5" data-toggle="tab">{l s='Download'}</a></li> {/if} {if isset($product) && $product->customizable} <li ><a href="#tab6" data-toggle="tab">{l s='Product customization'}</a></li> {/if} {/if} {if isset($packItems) && $packItems|@count > 0} <li ><a href="#blockpack" data-toggle="tab">{l s='Pack'}</a></li> {/if} </ul> <div class="tab-content page-product-content"> {if (isset($quantity_discounts) && count($quantity_discounts) > 0)} <!-- quantity discount --> <section id="quantityDiscount" class="tab-pane page-product-box"> <div id="quantityDiscount" class="tab-pane"> <table class="std table-product-discounts"> <thead> <tr> <th>{l s='Quantity'}</th> <th>{if $display_discount_price}{l s='Price'}{else}{l s='Discount'}{/if}</th> <th>{l s='You Save'}</th> </tr> </thead> <tbody> {foreach from=$quantity_discounts item='quantity_discount' name='quantity_discounts'} {if $quantity_discount.price >= 0 || $quantity_discount.reduction_type == 'amount'} {$realDiscountPrice=$quantity_discount.base_price|floatval-$quantity_discount.real_value|floatval} {else} {$realDiscountPrice=$quantity_discount.base_price|floatval*(1 - $quantity_discount.reduction)|floatval} {/if} <tr class="quantityDiscount_{$quantity_discount.id_product_attribute}" data-real-discount-value="{convertPrice price = $realDiscountPrice}" data-discount-type="{$quantity_discount.reduction_type}" data-discount="{$quantity_discount.real_value|floatval}" data-discount-quantity="{$quantity_discount.quantity|intval}"> <td> {$quantity_discount.quantity|intval} </td> <td> {if $quantity_discount.price >= 0 || $quantity_discount.reduction_type == 'amount'} {if $display_discount_price} {if $quantity_discount.reduction_tax == 0 && !$quantity_discount.price} {convertPrice price = $productPriceWithoutReduction|floatval-($productPriceWithoutReduction*$quantity_discount.reduction_with_tax)|floatval} {else} {convertPrice price=$productPriceWithoutReduction|floatval-$quantity_discount.real_value|floatval} {/if} {else} {convertPrice price=$quantity_discount.real_value|floatval} {/if} {else} {if $display_discount_price} {if $quantity_discount.reduction_tax == 0} {convertPrice price = $productPriceWithoutReduction|floatval-($productPriceWithoutReduction*$quantity_discount.reduction_with_tax)|floatval} {else} {convertPrice price = $productPriceWithoutReduction|floatval-($productPriceWithoutReduction*$quantity_discount.reduction)|floatval} {/if} {else} {$quantity_discount.real_value|floatval}% {/if} {/if} </td> <td> <span>{l s='Up to'}</span> {if $quantity_discount.price >= 0 || $quantity_discount.reduction_type == 'amount'} {$discountPrice=$productPriceWithoutReduction|floatval-$quantity_discount.real_value|floatval} {else} {$discountPrice=$productPriceWithoutReduction|floatval-($productPriceWithoutReduction*$quantity_discount.reduction)|floatval} {/if} {$discountPrice=$discountPrice * $quantity_discount.quantity} {$qtyProductPrice=$productPriceWithoutReduction|floatval * $quantity_discount.quantity} {convertPrice price=$qtyProductPrice - $discountPrice} </td> </tr> {/foreach} </tbody> </table> </div> </section> {/if} {if isset($product) && $product->description} <!-- More info --> <section id="tab2" class="tab-pane page-product-box"> <!-- full description --> <div class="rte">{$product->description}</div> </section> <!--end More info --> {/if} {if isset($features) && $features} <!-- Data sheet --> <section id="tab3" class="tab-pane page-product-box active"> <table class="table-data-sheet"> {foreach from=$features item=feature} <tr class="{cycle values="odd,even"}"> {if isset($feature.value)} <td>{$feature.name|escape:'html':'UTF-8'}</td> <td>{$feature.value|escape:'html':'UTF-8'}</td> {/if} </tr> {/foreach} </table> </section> <!--end Data sheet --> {/if} <!--HOOK_PRODUCT_TAB --> {if isset($HOOK_PRODUCT_TAB_CONTENT) && $HOOK_PRODUCT_TAB_CONTENT}{$HOOK_PRODUCT_TAB_CONTENT}{/if} <!--end HOOK_PRODUCT_TAB --> {if isset($accessories) && $accessories} <!--Accessories --> <section id="tab4" class="tab-pane page-product-box"> <div class="block products_block clearfix"> <div class="block_content"> <div class="product_list grid row produst_list_default"> {foreach from=$accessories item=accessory name=accessories_list} {if ($accessory.allow_oosp || $accessory.quantity_all_versions > 0 || $accessory.quantity > 0) && $accessory.available_for_order && !isset($restricted_country_mode)} {assign var='accessoryLink' value=$link->getProductLink($accessory.id_product, $accessory.link_rewrite, $accessory.category)} <div class="product_block col-xs-12 col-sm-6 col-md-3 col-lg-3 item ajax_block_product{if $smarty.foreach.accessories_list.first} first_item{elseif $smarty.foreach.accessories_list.last} last_item{else} item{/if} product_accessories_description"> <div class="product-container product-block" > <div class="left-block"> <div class="product-image-container image "> <a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{$accessory.legend|escape:'html':'UTF-8'}" class="product-image product_image"> <img class="lazyOwl" src="{$link->getImageLink($accessory.link_rewrite, $accessory.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{$accessory.legend|escape:'html':'UTF-8'}" /> </a> </div> {if isset($quick_view) && $quick_view} <a class="quick-view" href="{$accessory.link|escape:'html':'UTF-8'}" rel="{$accessory.link|escape:'html':'UTF-8'}" data-original-title="{l s='Quick view'}"> <i class="fa fa-expand"></i> </a> {/if} </div> <div class="right-block"> <div class="product-meta"> <h5 class="product-name name" > <a href="{$accessoryLink|escape:'html':'UTF-8'}"> {$accessory.name|truncate:45:'...':true|escape:'html':'UTF-8'} </a> </h5> {if $accessory.show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE} <div class="content_price"> <span class="price"> {if $priceDisplay != 1} {displayWtPrice p=$accessory.price}{else}{displayWtPrice p=$accessory.price_tax_exc} {/if} </span> </div> {/if} <div class="product-desc block_description"> <a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{l s='More'}" class="product_description"> {$accessory.description_short|strip_tags|truncate:25:'...'} </a> </div> <div class="clearfix functional-buttons"> {if !$PS_CATALOG_MODE && ($accessory.allow_oosp || $accessory.quantity > 0)} <a style="width: 100%" class="exclusive button ajax_add_to_cart_button btn btn-outline" href="{$link->getPageLink('cart', true, NULL, "qty=1&amp;id_product={$accessory.id_product|intval}&amp;token={$static_token}&amp;add")|escape:'html':'UTF-8'}" data-id-product="{$accessory.id_product|intval}" title="{l s='Add to cart'}"> <i class="fa fa-shopping-cart"></i><span>{l s='Add to cart'}</span> </a> {/if} {*<a class="lnk_view" href="{$accessory.link|escape:'html':'UTF-8'}" title="{l s='View'}"> <i class="fa fa-info"></i> </a>*} {*{hook h='displayProductListFunctionalButtons' product=$accessory}*} </div> </div> </div> </div> </div> {/if} {/foreach} </div> </div> </div> </section> <!--end Accessories --> {/if} <!-- description & features --> {if (isset($product) && $product->description) || (isset($features) && $features) || (isset($accessories) && $accessories) || (isset($HOOK_PRODUCT_TAB) && $HOOK_PRODUCT_TAB) || (isset($attachments) && $attachments) || isset($product) && $product->customizable} {if isset($attachments) && $attachments} <!--Download --> <section id="tab5" class="tab-pane page-product-box"> {foreach from=$attachments item=attachment name=attachements} {if $smarty.foreach.attachements.iteration %3 == 1}<div class="row">{/if} <div class="col-lg-4 col-md-4 col-xs-12"> <h4><a href="{$link->getPageLink('attachment', true, NULL, "id_attachment={$attachment.id_attachment}")|escape:'html':'UTF-8'}">{$attachment.name|escape:'html':'UTF-8'}</a></h4> <p class="text-muted">{$attachment.description|escape:'html':'UTF-8'}</p> <a class="btn btn-default btn-block" href="{$link->getPageLink('attachment', true, NULL, "id_attachment={$attachment.id_attachment}")|escape:'html':'UTF-8'}"> <i class="icon-download"></i> {l s="Download"} ({Tools::formatBytes($attachment.file_size, 2)}) </a> <hr> </div> {if $smarty.foreach.attachements.iteration %3 == 0 || $smarty.foreach.attachements.last}</div>{/if} {/foreach} </section> <!--end Download --> {/if} {if isset($product) && $product->customizable} <!--Customization --> <section id="tab6" class="tab-pane page-product-box"> <!-- Customizable products --> <form method="post" action="{$customizationFormTarget}" enctype="multipart/form-data" id="customizationForm" class="clearfix"> <p class="infoCustomizable"> {l s='After saving your customized product, remember to add it to your cart.'} {if $product->uploadable_files} <br /> {l s='Allowed file formats are: GIF, JPG, PNG'}{/if} </p> {if $product->uploadable_files|intval} <div class="customizableProductsFile"> <h5 class="product-heading-h5">{l s='Pictures'}</h5> <ul id="uploadable_files" class="clearfix"> {counter start=0 assign='customizationField'} {foreach from=$customizationFields item='field' name='customizationFields'} {if $field.type == 0} <li class="customizationUploadLine{if $field.required} required{/if}">{assign var='key' value='pictures_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field} {if isset($pictures.$key)} <div class="customizationUploadBrowse"> <img src="{$pic_dir}{$pictures.$key}_small" alt="" /> <a href="{$link->getProductDeletePictureLink($product, $field.id_customization_field)|escape:'html':'UTF-8'}" title="{l s='Delete'}" > <img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" class="customization_delete_icon" width="11" height="13" /> </a> </div> {/if} <div class="customizationUploadBrowse form-group"> <label class="customizationUploadBrowseDescription"> {if !empty($field.name)} {$field.name} {else} {l s='Please select an image file from your computer'} {/if} {if $field.required}<sup>*</sup>{/if} </label> <input type="file" name="file{$field.id_customization_field}" id="img{$customizationField}" class="form-control customization_block_input {if isset($pictures.$key)}filled{/if}" /> </div> </li> {counter} {/if} {/foreach} </ul> </div> {/if} {if $product->text_fields|intval} <div class="customizableProductsText"> <h5 class="product-heading-h5">{l s='Text'}</h5> <ul id="text_fields"> {counter start=0 assign='customizationField'} {foreach from=$customizationFields item='field' name='customizationFields'} {if $field.type == 1} <li class="customizationUploadLine{if $field.required} required{/if}"> <label for ="textField{$customizationField}"> {assign var='key' value='textFields_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field} {if !empty($field.name)} {$field.name} {/if} {if $field.required}<sup>*</sup>{/if} </label> <textarea name="textField{$field.id_customization_field}" class="form-control customization_block_input" id="textField{$customizationField}" rows="3" cols="20">{strip} {if isset($textFields.$key)} {$textFields.$key|stripslashes} {/if} {/strip}</textarea> </li> {counter} {/if} {/foreach} </ul> </div> {/if} <p id="customizedDatas"> <input type="hidden" name="quantityBackup" id="quantityBackup" value="" /> <input type="hidden" name="submitCustomizedDatas" value="1" /> <button class="button btn btn-default button button-small" name="saveCustomization"> <span>{l s='Save'}</span> </button> <span id="ajax-loader" class="unvisible"> <img src="{$img_ps_dir}loader.gif" alt="loader" /> </span> </p> </form> <p class="clear required"><sup>*</sup> {l s='required fields'}</p> </section> <!--end Customization --> {/if} {/if} </div> {if isset($packItems) && $packItems|@count > 0} <section id="blockpack" class="tab-pane page-product-box"> <h3 class="page-product-heading">{l s='Pack content'}</h3> {include file="$tpl_dir./product-list.tpl" products=$packItems} </section> {/if} {if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/if} Merci pour votre aide.
  10. Bonjour, Je cherche à afficher une list ou une grille des produit selon l'id de la categorie ou mieux selon la catégorie parente mais je n'arrive pas à faire cela. J'ai essayé dans product-list.tpl de faire ceci : {if $category->id == 5} <ul{if isset($id) && $id} id="{$id}"{/if} class="product_list grid row{if isset($class) && $class} {$class}{/if}"> {else} <ul{if isset($id) && $id} id="{$id}"{/if} class="product_list list row{if isset($class) && $class} {$class}{/if}"> mais ca ne fonctionne pas. Avez-vous des idées? ou avez-vous déjà été confronté à ce problème ? Merci
  11. Bonjour, Je n'arrive pas à envoyer ma newsletter avec le module "Newsletter Pro" . J'utilise Sendinblue pour envoyer mes emails. Tous les envois de mail de prestashop fonctionne (emails transactionnels, ...) sauf avec ce module J'ai cette erreur : Connection could not be established with host smtp-relay-eu-fr-1.51b.tech [Unable to find the socket transport "off" - did you forget to enable it when you configured PHP? #0] D'ou peut provenir cette erreur ? Merci
  12. Avec l'url de test j'ai bien l'enregistrement des commandes sur prestashop Mais avec l'url final non La nouvelle url sera un transfert de domaine car il y a un site déjà existant avec cette url , c'est un site fait sur mesure (sans prestashop donc) donc la banque connaitre déjà l'url
  13. Et le fichier pathfile a toujours l'adresse avec le nom de domaine de test. Ce fichier va se mettre à jour tout seul ? sans réinitialisation? Je cherche un retour d'expérience sur ce point
  14. Il y a t'il un moyen de voir l'url de retour dans le module ? Dans la BDD, dans ps_configuration il y a un chemin relatif dans ATOS_BIN_DIR Mais je ne sais pas si cela à un rapport avec l'url de retour
  15. Je ne change pas de serveur donc c'est déjà cela. En fait j'ai effectué un test en changeant l'url dans prestashop et en modifiant le fichier host de mon ordinateur pour faire pointer l'ip à l'url final mais les commandes ne s'enregistre pas. D'ou mon inquiétude concernant l'url de retour J'ai testé ATOS en mode test
  16. Bonjour, Je souhaite changer l'url de mon site (nom de domaine) sans changement de serveur. Si je modifie les url dans l'administration de prestashop (preferences/seo et url) , est ce que le module de paiement par carte ATOS va fonctionner correctement , je pense notamment à l'url de retour? Ou faut-il réinitialiser le module pour qu'il prenne en compte ce changement. Je vois que dans la BDD (table ps_configuration) il y a le lien du site. Merci pour votre retour d'expérience.
  17. Pensez-vous que vu que le site final existe déjà et que le transfert sera réalisé bientôt et qu'il n'y a que moi qui peut accéder au site en développement avec l'url final via la modification du fichier host, du coup le retour de atos va cherche le site déjà existant. Je penche pour cette idée. Cela vous parez cohérent ? J'essaie de me rassurer !
  18. Bonjour, J'utilise le module ATOS pour mon site en développement (url de développement) et il fonctionne bien. Pour tester le site sur l'url final, j'ai modifié le fichier host de mon ordinateur (j'ai suivi ce tutoriel https://www.evxonline.com/guides/234-tester-son-site-sans-changer-les-dns-forcer-fichier-host.html ) et modifié le nom de domaine dans prestashop Cependant quand je teste alors un paiement par carte bancaire, la commande ne s'enregistre pas et le retour boutique redirige vers la page "historique des commandes". Dois-je m'inquiéter pour le site final car nous allons bientôt faire un transfert de nom de domaine et le mettre en production ? Quand pensez-vous? Quel peut-être la cause ? Merci pour vos réponses
  19. Bonjour, J'ai une question concernant la gestion des stocks et les commandes clients. Si pour un produit il me reste 1 quantité en stock et que deux clients commandes au même moment le produit . Comment cela se passe? Est ce dans ce cas dès qu'un client a payé, le deuxième ne peut plus commander ,même si si il est entrain de finaliser sa commande ? Merci pour vos réponses
  20. Bonjour, J'ai installé le module chrono post officiel dans le but d'importer automatiquement les frais de port sur mon site. J'ai paramétrer le module en mettant mon numéro de contrat et mot de passe. J'ai activer chrono 13, chrono expresse chrono classic. Prestashop a donc créer automatiquement ses 3 transporteur Pour chrono 13, il m'a crée des tranches et des tarifs qui n'ont rien a voir avec ceux de mon contrat. Et pour chrono express et chrono classic, il a mis des tarifs à 1 euros pour toutes les tranches. J'ai donc active la dernière option : quickcost (pour apparemment automatiser les tarifs) mais cela n'a rien changé. Je ne comprend pas comment fonctionne ce module? quelqu'un arrive à s'en servir. Dois-je recrée toutes les zones et pays sous prestashop pour qu'elles correspondent aux zone définit par chronopost? Faut il rentrer tous les tarifs manuellement? dans ce cas quel est l'utilité du module? Merci pour vos réponses si vous utilisez ce module.
  21. Resolu. Il manquait simplement enctype="multipart/form-data" dans la balise form.
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More