Jump to content

Broceliande

Members
  • Posts

    1,735
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by Broceliande

  1. Il n'y a pas de traduction pour ce champ , il ne faut donc pas le considérer comme un champ texte, mais comme un identifiant . Pour avoir un rendu maîtrisé , il te faut plutôt faire : {if $product.position=='new'}{l s='Position: product new'}{/if} {if $product.position=='...'}{l s='Position: product ....'}{/if} Ensuite tu retrouves les chaines Position: ... dans l'outil traduction , dans les traduction front office. Bien sûr tu pourrait mettre directement ta chaine voulue en français , mais plus difficile alors de le retrouver (risque de doublons) . Avec Position: .... , tu le retrouves directement et il te suffit de mettre le texte correspondant dans les traductions pour chaque langue utilisée (y compris le français, ceci porte souvent à confusion : on ne pense pas à traduire une chaine déja en fr et du coup on cherche ou la modifier)
  2. Je croyais avoir posté une réponse, elle a du rester en standby dans mon navigateur... Je crois qu'il n'est absolument pas logique d'annuler une commande pour un remplacement. Assez logiquement, en cas de contrôle ou si tu as affaire à un comptable , tu risques d'avoir à justifier pas mal de choses... Tu peux nous dire pourquoi cette annulation est nécessaire ? Car je comprendrais parfaitement si tu voulais faire l'inverse , c'est à dire relancer la période de garantie à 0 (ce qui est obligatoire je crois en cas de vice caché) Mais pour ce que tu décris, il n'y a pas lieu d'annuler la commande , et pour le coup la période de garantie est indiqué sur la facture et reste au départ de la date d'achat. Une facture ecommerce représente un contrat passé entre l'acheteur et le vendeur. Je doute qu'il soit adapté voire meme legal que tu génères toi même une nouvelle facture . Dans ce cas si des choses devaient être modifiées il faudrait un avenant. Bon je dis cela parce que tu te compliques peut être l'existence pour rien , ou alors simplement il nous manque quelque chose pour comprendre ce qui motive ce changement de facture.
  3. Pas de problème dans ce cas, et en natif : utilise simplement les déclinaisons . Tu auras alors , en plus du reste: - un stock distinct par déclinaison (couleurs dans ton cas) - des photos pour chacune itou - possibilité de règler un impact sur le poids et sur le prix pour une déclinaison C'est définitivement ce que tu cherches et prestashop gère celà en natif. Tu trouveras des tutos en cherchant sur ce forum. Je peux même pousser jusqu'à te mettre un exemple en place si tu n'y parviens pas .
  4. Salut, L'exemple de mathieu est un exemple complet en soi : <?php class IndexController extends IndexControllerCore { public function displayContent() { self::$smarty->display(_PS_THEME_DIR_.'home.tpl'); } } Sinon un autre exemple complet ICI
  5. Peux tu tester ça stp , j'ai codé ça rapido mais pas trop le temps de tester... Ca me semble juste à l'oeil mais il peut y avoir une erreur de parse ou de jugeotte psf_checkstock.php
  6. Bonjour, quelle version de presta ? Merci de jeter un oeil ICI C'est plus facile pour identifier le problème. Tu peux stp également coller la partie de code que tu as modifié , ou joindre le fichier intégral à ton post. De là on pourra jeter un oeil.
  7. Un détail ... mais qui a son importance : voir ici J'aurais pu te donner un bout de code pour te faciliter la tâche , mais sans la version , je fais pas
  8. Un petit up ... encore et toujours des demandes sans version... Je ne sais pas ce qu'en pensent les modéros , mais ça ne mériterait pas d'être épinglé ? Je sais bien que c'est déja dans les rules , mais la preuve en est... que ce n'est pas suffisant.
  9. Salut , /classes/PDF.php Effectivement, à chaque fois... Mais pour celà il suffit d'appeler $order->getTotalWeight() Ca je n'ai pas compris ? Le calcul des frais de port est déja fait dans le PDF , on n'y touche plus à postériori. Tu parles de le configurer ? Edit : Evite les ?!!! partout , on a l'impression de se faire eng....
  10. Pas de pb, c'est pour toi... ;-) Dans product-list.css, ligne 19, c'est le clear qui t'embête , passe le à none : ul#product_list li { background: #D0D3D8 url('../img/block_category_item_bg.jpg') repeat-x; border: solid 1px #D0D3D8; padding: 6px; min-height: 280px; height: auto; clear: none; margin-bottom: 0.3em; } Dans la foulée , autant regrouper les propriété , tu peux supprimer ligne 8 li.ajax_block_product { display: block; width: 150px; height: 280px; float: left; } puis pourquoi pas ajouter un margin-right pour espace tes blocs (tu peux ajuster après) et donc tout regrouper, au final on a : ul#product_list li { background: #D0D3D8 url('../img/block_category_item_bg.jpg') repeat-x; border: solid 1px #D0D3D8; padding: 6px; min-height: 280px; height: auto; clear: none; margin-bottom: 0.3em; margin-right: 5px; display: block; width: 150px; height: 280px; float: left; }
  11. Non tu as raison , il n'y a qu'une table à éditer. Je me suis remémoré un cas récent ou j'avais du utiliser deux classes , ayant deux table editables...
  12. Ca me parait pas mal. Demain je te code une base pour le backend et la structure du module. Ce sera un admin tab (ou deux en fait : un pour le listing, un pour editer une fiche) Je ferais qu'une base mais au moins tu auras ça en presta et on verra si on peut avancer avec ce qu'on a.
  13. En effet la methode est plutot moyenne... Le fait d'ajouter un champ à $fieldsRequired fait que ce champ ne peut plus avoir la valeur null, . Ce que je fais moi est beaucoup plus simple et ne crée pas d'effets de bord de ce type . Je modifie juste authentication.php , comme suit : if (Tools::isSubmit('submitAccount')) { $create_account = 1; $smarty->assign('email_create', 1); $validateDni = Validate::isDni(Tools::getValue('dni')); if (!Validate::isEmail($email = Tools::getValue('email'))) $errors[] = Tools::displayError('e-mail not valid'); if (!Validate::isPasswd(Tools::getValue('passwd'))) $errors[] = Tools::displayError('invalid password'); if (Customer::customerExists($email)) $errors[] = Tools::displayError('someone has already registered with this e-mail address'); elseif (!Tools::getValue('phone') AND !Tools::getValue('phone_mobile')) $errors[] = Tools::displayError('Merci d\'entrer au moins un numéro de téléphone (Utile en cas de probleme avec votre commande ou par le transporteur au moment de la livraison).'); // ici suffit à générer l'erreur sans poser problème type 'tentative de piratage'
  14. Une petite info pour ceux qui se le demandent : Il n'est que partiellement compatible avec la 1.4 . La redirection se fait bien mais pas le message d'erreur. Je règlerais ça dès que j'ia un moment. Toujours pour info : pour modifier le texte d'erreur ou le traduire en plusieurs langes , utilisez les traductions module dans le BO
  15. Merci de ton retour seabird , car le code que tu m'as collé m'a fait réaliser que je n'avais pas envoyé la bonne version ! J'en ai donc profité pour rectifier le bon fichier dans le 1er post le hookTop que tu peux donc adapter à tes besoins se présente ainsi : function hookTop($params) { global $cart, $smarty; if(isset($_POST['id_carrier'])) { $address = new Address($cart->id_address_delivery); $address->getFields(); if(!$this->isPhoneNumber($address->phone) && !$this->isPhoneNumber($address->phone_mobile)) Tools::redirect('order.php?step=2&phonestep;'); } if(Tools::getIsset('phonestep')) { $this->_errors[] = $this->l('Nos transporteurs demande qu\'au moins un numéro de téléphone soit présent dans votre adresse.'). ' '.$this->l('Vous pouvez corriger ceci en cliquant ').'id_address_delivery.'">'.$this->l('sur ce lien').''; $smarty->assign('errors' , $this->_errors); } return; } Comme tu le vois il comprends la gestion d'erreur tel que décrite dans le post, ainsi qu'une fonction avancée de test de numéro de téléphone, car un phone vide est retourné valide par Tools::isPhoneNumber() . Je ne sais pas du tout comment je me suis débrouillé pour envoyer une version 'prébrouillon'... je comprends que tu galères. Pour ma décharge il était très très tard ... Le zip initial est celui que j'ai créé à la va vite au tout début pour envoyer sur mon dédié et commencer à tester et developper le truc in situ ... Pour ta manip de mettre à 0 tous les champs , c'est une mauvaise solution . Si tu as une tentative de piratage , c'est peut être que tu as modifié des éléments dans le processus d'enregistrement, voire dans la classe Address , non ?
  16. Franchement tu la mets bien ou tu veux. Pourtant, même si tu n'apprécie pas que l'on réponde avec une pointe d'humour, ou que ce soit plutôt mon humour qui soit vaseux ou te déplaise, ma réponse , elle , est loin d'être à jeter. Si tu avais pris juste la peine de suivre le lien que je t'ai donné : http://www.prestashop.com/fr/features , tu as toute la base de ton CDC . Comment crois tu que nous , nous rédigions les notres , si nous n'en achetons pas de tout fait ? Ben moi je me complique pas l'existence, je commence par lister les fonctionnalités sur un doc (mon lien et un copier/coller suffisent). Ensuite je supprime de la liste tout ce dont mon client n'a pas besoin . Je l'affine un peu et hop , 30 minutes j'ai un CDC qui se tient. Cette méthode est celle qu'utilisent souvent mes clients. C'est donc ce qu'ils veulent. Si tu veux plus que ce que nous avons à te donner il faut payer le document sur addons, tu n'y semblais pas disposé. Edit : Il va de soi que ce que viens de dire coeos.pro vaut pour moi aussi, je nage un peu dans le flou et je ne crois pas que nous nous soyons fichu de toi dans nos réponses. Dommage que tu m'aies lu à contre-pied. Je n'ai pas eu de retour négatif au sujet de mes réponses ici même à ce jour. Ca m'en fait un.
  17. Oui oui! mais c'est mea culpa , en fait le code que j'avais posté initialement était celui d'une 1.3.7 . C'est pour cela que ça roule chez toi. Par contre ne 1.4 , autant l'ajax pose no problem, autant lorsqu'on utilise le bouton rechercher, là on avait une erreur... Du coup la classe présente dans le premier post est désormais une 1.4 , il manque la 1.3.7 que tu as déja au final :-)
  18. Je me demande, tu as copié l'intégralité de ce que je t'ai donné , y compris le : foreach ($products AS $key => &$product) ? J'ai rajouté un & pour avoir $product par référence et pouvoir lui ajouter l'entrée category_name .
  19. pour emanu30 , il faut en effet supprimer les lignes adéquates dans product-list.tpl. Pour edern , peut être pour vous deux je sais pas ... Pour avoir 2 , 3 colonnes peut importe , tout se fait en css : Un 'bloc produit' au complet est un , sa classe est ajax_block_product. Le conteneur est un , il a l'id "product_list" On un donc besoin d'un css sous cette forme (j'essaye de détailler les valeurs essentielles) ul#product_list{ width: xxxpx; /* largeur totale dispo en pixels , à ajuster ... */ } li.ajax_block_product{ display:block; /* le li se comporte désormais comme un bloc */ width: yyypx[; /* largeur d'un seul bloc produit */ height: hhhpx; /* hyper important d'avoir une hauteur fixe pour que la ligne qui suit permette un alignement régulier */ float:left; /* chaque bloc viendra se loger à la gauche du précédent : si il y a la place, sinon à gauche sur la ligne suivante */ } Ce qu'il faut savoir : la largeur d' (un seul bloc + les marges) * 3 doit être inférieure à xxx/3 Si ça ne marche pas , c'est que UL , le bloc parent , a un padding > 0 , dans ce cas , il faut augmenter xxx (mais normalement on peut pas car vous avez bien mis la taille maxi , hein ?), ou alors simplement réduire le padding left et right dans ul#product_list{} Padding est la marge interne d'un bloc html : les éléments à l'intérieur ne seront pas systématiquement collés au bord si le padding est >0 Si ça ne marche toujours pas , c'est que vous avez oublié de compter une marge dans vos calculs, celle du bloc ul , ou celle du bloc li.
  20. Ben la pour le coup , à vous deux vous y êtes on dirait ! :-)
  21. public function hookExtraCarrier($params) { global $cart, $smarty; $carrierIci = new Carrier(intval(Configuration::get('ICIRELAIS_ID_CARRIER'))); if (isset($carrierIci) AND $carrierIci->active) { $address = new Address(intval($params['cart']->id_address_delivery)); $address_details = $address->getFields(); $zone = new Zone(Address::getZoneById($address->id)); $ici_relais_points = $this->getPoints($address_details); if((is_array($ici_relais_points))AND($zone->name == 'France')){ $smarty->assign(array( 'error' => $this->l($ici_relais_points['error']), 'ici_relais_points' => $ici_relais_points, 'urlIci' => _MODULE_DIR_.'icirelais/validation.php', 'id_carrier' => intval($carrierIci->id))); return $this->display(__FILE__, 'icirelais.tpl'); } } }
×
×
  • Create New...

Important Information

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