Navigation

    aide prestashop

    PrestaHelp

    • S'inscrire
    • Se connecter
    • Recherche
    • Catégories
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Recherche
    1. Accueil
    2. herve_02
    H
    • Profil
    • Abonnements
    • Abonnés
    • Sujets
    • Messages
    • Meilleur sujets
    • Groupes

    herve_02

    @herve_02

    0
    Réputation
    17
    Messages
    41
    Vues
    0
    Abonnés
    0
    Abonnements
    Inscrit Dernière connexion

    herve_02 S'abonner

    Messages postés par herve_02

    • RE: Solutions de paiement...

      @eolia

      cooollll

      de toute façon tout sera mieux que le presta 1.7.7.x qui gère la boutique actuelle. Le BO est cassé en mille morceaux (il parait que la migration 1.4 -> 1.7.7 a été violente et douloureuse... peut être plus de 20 modules de tous zorizons) parfois lorsque l'on active ou désactive un module, on arrive sur une page .json pour faire tomber en marche comme je voulais la nouvelle version de paypal (oui je suis un malade mental d'avoir mis a jour un module sur une boutique au BO un peu cassé (il manque des icones cela casse toute la mise en page, il faut plus de 10 secondes pour acceder à une page de config) donc pour le faire tomber en marche j'ai du lire du code et taper directement dans ps_configuration et tenter de trouver les bonnes variables.

      tout le reste sera un parcours de santé

      ;-)

      posté dans Discussion générale
      H
      herve_02
    • RE: Petit code pour les descriptions de produits

      @eolia

      Oui on n'aura plus les balises mais on aura perdu la "sémantique", ce qui est un bien grand mot puisque ce n'est que de la mise en forme pour le cas du CD si tout le temps on a
      cd
      titre
      titre

      C'est facile mais ce n'est pas toujours le cas.. je vais m'arracher les cheveux (ce qu'il en reste)

      Disons que le l'on peut faire des "modèles" et utiliser 'ou pas' les modèles. Ceux qui vendent des cd, des dvd, des produits dérivés, peut faire un modèle cd, un modèle dvd et laisser le reste en "normal" ensuite si on fait tourner et qu'il n'y a rien à faire on a juste un return après le document.querySelectorAll(tag) s'il ne ramène rien, vue comment presta tourne, cela ne se verra même pas.

      je vais le mettre en œuvre sur notre boutique. je vais "hardcoder" dans le javascript la mise en forme et la récup des tags et laisser le javascript dans le bon dossier d'un module product par exemple. cela devrait le faire ;-)

      L'avantage de cela est qu'il est moins chronophage de rentrer ses produits et cela "oblige" à être sémantique. on est certains d'avoir la même mise en forme partout. c'est un peu du html sémantique

      posté dans Discussion générale
      H
      herve_02
    • Petit code pour les descriptions de produits

      bonjour,
      je vous livre mon petit code (sous licence WTFL) mais j'aimerais bien qu'il ne soit pas à la base d'un module payant.

      Historique du pourquoi.

      Je travaille sur un prestashop d'un client-ami, sa migration de 1.7.7 vers phenix suite. ET (sinon ce n'est pas drôle) je doit mettre en place un crm pour gérer diverses choses comme la facturation, les droits d'auteurs et autres joyeuseté.

      Il a été convenu d'utiliser le crm (tryton pour être précis - parce que je le connais un peu, j'avais développé il y a plus de 10 ans un produit pour un esat basé sur openerp.), le crm comme base arrière. en clair : tout est sur le crm et phenixsuite est juste consacré à la vente. Je suis largement plus à l'aise à "développer " (bien grand mot) sur tryton que sur presta/phenix. Oui je suis long.

      Et donc je dois récupérer toutes les infos de presta pour les passer sur tryton. (et accessoirement son ancien logiciel de gestion des droits) Et lors de la récup-traitment-import des produits je me suis aperçu que pour les cd, on avait le droit à des choses comme ça

      <p style="text-align: left;"> </p>
      <p style="text-align: center;"><span style="font-size: 12pt; color: #800000;"><strong>Contenu du CD</strong></span></p>
      <p style="text-align: left;"> </p>
      <p style="text-align: left;"><strong><span style="color: #800000;">1. Chacha Latino</span></strong>  2'56</p>
      

      j'ai abrégé. donc dans la base de donnée il y a ET des infos ET de la mise en forme. Beaucoup de bruit (outre la difficulté à récupérer avec du csv entre les sauts de ligne et les fins de lignes...) mais c'est un détail.
      Cela veut dire qu'à CHAQUE fois on doit entrer tout le décorum html dans la base et donc avec la mise en forme. (même si on peut css-er une bonne partie.)

      Et comme je suis un rationaliste tétu et entêté. je me suis dit, ce serait vachement plus cool de rentrer un truc comme ça

      <cd titre="Le bal musette en france du 18ème siècle" auteurs="Duchmol Jean yves & josette Pierre" duree="45'32">
      <piste no="1" duree="3'45" titre=" Ah le petit vin blanc"/>
      <piste no="2" duree="2'58" titre=" Il est des nôtres"/>
      </cd> 
      <cd titre="Le bal musette en france du 19ème siècle" auteurs="Lataupe rené & the crazy fogg" duree="45'32">
      <piste no="1" duree="3'45" titre=" Il faut le voir"/>
      <piste no="2" duree="2'58" titre=" Pour le croire"/>
      </cd>
      

      et gérer son affichage. alors j'ai un peu taffé et écrit quelques lignes de plain javascript, que les puristes trouveront peut être horrible. (n'hésitez pas à proposer des améliorations)

      <script>
      window.onload	= function (){
      do_convert('cd');
      }
      
      var dF = document.createDocumentFragment();
      // dans cds le 1 est l'attribut du tag du cd, le 2 le tag a créer et le 3 la la classe du tag créé
      const cds=[['titre','h3','vert jaune'],['auteurs','h4',''],['duree','h5','']];
      // idem dessus sans style (facile à rajouter) comme on parcours ces array
      // le ['','br',''] permet un saut de ligne
      const tis=[['no','span',''],['titre','span',''],['duree','span',''],['','br','']];
      
      function $$(t,e){
      	if (!e) return document.querySelectorAll(t);
      	else return e.querySelectorAll(t);
      }
      
      function do_liste(what,item){
      for (const el of item) {
      	my_tag=document.createElement(el[1]);
      	if (el[0])  my_tag.textContent= what.attributes[el[0]].value;
      	if (el[2])  my_tag.className=el[2];
      	dF.appendChild(my_tag);
      	}
      }
      
      function do_convert(t){
      let list_cd=$$(t);
      if (list_cd.length<1) return;
      for(var i = 0; i < list_cd.length; i++) {
      	do_liste(list_cd[i],cds)
      	let list_titres=$$('piste',list_cd[i]);
      	for(var j = 0; j < list_titres.length; j++) {
      		do_liste(list_titres[j],tis)
      	}
      list_cd[i].replaceWith(dF);
      }
      }
      </script>
      

      le code est simpliste, je ne vais pas vous faire l'affront de le commenter. J'ai mis des balises html pour le voir tomber en marche. Il n'a pas besoin des sauts de ligne dans les éléments et, par nature, les <cd></cd> et <piste/> ne sont pas affichés et ensuite remplacé par le code fabriqué pour le plain javascript. On est certain du coup d'avoir partout la même présentation mise en forme te on gagne beaucoup de temps à saisir les trucs.

      je ne l'ai pas encore mis dans phenix, je suis juste en phase de construction de l'ensemble.

      j'espère que cela donnera des idées et aidera certains.

      posté dans Discussion générale
      H
      herve_02
    • RE: Solutions de paiement...

      Finalement on a choisit sumup, le mode était installable, le client avait déjà un compte . Il trouve que c'est le moins cher pour lui.

      posté dans Discussion générale
      H
      herve_02
    • Solutions de paiement...

      Bonjour,
      j'ai un peu écumé les fora suite à la demande d'un client-ami qui veut partir de sa banque je ne sais pas trop pourquoi.
      Il aimerait bien que paypal gère tout. J'ai lu un topic (que je ne retrouve plus) qui expliquait que la solution paypal "canal historique" ne proposait pas la carte bancaire sans compte pour des paiements depuis un mobile. Il existe pour cela prestashop checkout. je me souviens avoir lu que le module était assez intrusif et qu'il nous liait avec prestashop (ce qu'on trouve moyen) mais si pas d'autres solutions...

      il y a le module paypal-enhanced de eolia mais cela reste comme le module paypal classique avec ce trou dans la raquette. la boutique en ligne fait dans les 50 000 euros par an (les marges ne sont pas élevés) et il y a des ventes hors UE et hors europe...

      qu'est-ce qui serait conseillé d'après vous. C'est vrai que la solution chechout de paypal est attirante car elle bouche le fameux trou...

      posté dans Discussion générale
      H
      herve_02
    • blockcategory et left_column

      Bon, cela fait quelques temps que je rame dessus et j'ai trouvé une piste peut être?

      j'ai activé le blockcategory dans mon hook_left_column. MAIS il ne s'affiche pas à la première visite , il faut choisir un produit et revenir pour qu'il reste affiché. Certains pensent que cela vient du cache navigateur, mais mes test semblent montrer que non. vider le cache navigateur, partir d'une nouvelle session.... vider les cokkies... vider le cache smarty... la totale

      Donc je lis le code.. schématisons

      public function hookLeftColumn($params)
          {
      				
              if(!$this->setLastVisitedCategory()) {
                  return;
              }
              $phpself = $this->context->controller->php_self;
              $current_allowed_controllers = array('category');
      
      blablabla
      }
      

      Si je commente ce return, elle s'affiche comme désiré. Mais disons que j'hésite à faire le bourrinr, je vais plus loin...

      public function setLastVisitedCategory()
          {
              if(method_exists($this->context->controller, 'getCategory')
                  && ($category = $this->context->controller->getCategory())
              ) {
                  if(!$category->active) { // c'est pas le bon controller donc on passe à la suite
                      return false;  
                  }
              }
       $cache_id = 'blockcategories::setLastVisitedCategory'; // normalement vide
              if(!Cache::isStored($cache_id)) {
                  if(method_exists($this->context->controller, 'getCategory') // probablement pas
                      && ($category = $this->context->controller->getCategory())
                  ) {
                      $this->context->cookie->last_visited_category = $category->id; // pas de cookie déposé
                  }
                  elseif(method_exists($this->context->controller, 'getProduct') // non plus, sauf quand
                      && ($product = $this->context->controller->getProduct())) { // on a vu une page produit
                      if(!isset($this->context->cookie->last_visited_category)
                          || !Product::idIsOnCategoryId($product->id, array(array('id_category' => $this->context->cookie->last_visited_category)))
                          || !Category::inShopStatic($this->context->cookie->last_visited_category, $this->context->shop)
                      ) { //// la il ne dépose pas de cookie
                          $this->context->cookie->last_visited_category = (int)$product->id_category_default;
                      }
                  } //// donc au saute là... ??? mais  pas de cookies non plus....
                  Cache::store($cache_id, $this->context->cookie->last_visited_category);
              }
          //// et donc pas pastèque return false... tout le temps.....
              return Cache::retrieve($cache_id);
          }
      
      }
      

      De ce que je comprends... Lorsque l'on arrive sur la page la première fois, il n'y a pas de catégorie disponible donc on demande d'activer la dernière catégorie visitée, ce qui ne donne rien et renvient rien et donc return vide....
      il n'y a pas de dépôts de cookie lors de cette navigation... je vais prendre le temps d'investiguer

      "" je ne sais pas si c'est vraie ou pas, ce navigateur de m* firefox à jour, me dit qu'il n'y pas de cookie alors même qu'il y en a puisque je me suis logué sur un site... p*tain je devrais regarder d'un autre navigateur...

      en ce moment je n'ai pas le temps de faire dans la dentelle alors je vai commenter à la bourrin, mais il faudrait se pencher plus sur la question, ce que je ferais si le soucis persiste et que personne ne voit la solution évidente.

      posté dans BUG connus
      H
      herve_02
    • RE: [REGLÉ] override - je n'y arrive pas.

      @eolia

      oui c'est pour cela que je travaille à l'ancienne mais à la mode phénix,; et si je suis "chiant" c'est parce que j'aime bien faire les choses et je préfère demander le temps que j'acquiers l'expérience de bien faire, pour peut être, qui sait proposer aussi du code à reverser.

      là je travaille dans mon coin à ajouter une barre de catégorie en horizontal, sans faire de module mais en utilisant le module blockcatégorie du thème de base. avec le moins de modifs possibles... ensuite je viendrais me faire humilier ici en expàosant ce que j'ai fait ;-)

      en tout cas largement merci du code que je vais étudier avec la révérence d'un padawan, ce qui va me permettre de gagner de longues heures ;-)

      j'ai aussi commandé un bouquin bootstrap et jquery....

      lorsque j'avais fait mon site de suivi d'instruction en famille j'avais codé tout seul mon ajax, mais à rome on fait comme les romains.

      posté dans Modules
      H
      herve_02
    • RE: [REGLÉ] override - je n'y arrive pas.

      en zonant sur internet je suis tombé sur ça... j'ai envie de pleurer devant tant de bêtise.....

      https://www.webbax.ch/2022/03/10/prestashop-ajouter-champ-fiche-produit/

      la première est ça :

      a) il était préférable d’acheter un module qui fait le travail où tout le développement a déjà été effectué en amont. Certes on achète le module, mais on obtient un gain de temps d’implémentation et plus de confort à l’utilisation…

      qui est une démonstration que le produit n'est pas adapté à un commerçant, mais à un vendeur pour commerçant. pas certain que Bruno Lévêque, soit enchanté de cela.

      la seconde.... est le thème même de l'article

      b) Et en prenant cette approche de manière assez amusante, je suis arrivé à une conclusion que je pouvais détourner toutes les règles habituelles en me servant d’un fichier externe CSV qui pourrait être piloté à la main, sans faire aucun changement dans des fichiers PHP tout en me limitant uniquement au template de Smarty.

      je suis ébahie que le mec n'a même pas honte d’écrire ça. et il se dit, attention du peu, "Expert PrestaShop"

      posté dans Modules
      H
      herve_02
    • RE: [REGLÉ] override - je n'y arrive pas.

      @eolia

      merci j'utilise tout le temps vider le cache...

      ;-)

      posté dans Modules
      H
      herve_02
    • RE: [REGLÉ] override - je n'y arrive pas.

      @eolia

      Alors, les docs de prestashop sont plutôt compliquées car pas complète. on dirait qu'elles sont écrites pour que celui qui écrit se souviennent de ce qu'il a fait. Et celui qui veut comprendre (j'ai lu la une large partie de la doc en suivant le lien que j'avais trouvé avant même d'ouvrir un éditeur de texte - je suis un homme de la doc) en partant de zéro, c'est assez compliqué.

      Ensuite ceux qui ont écrit la doc se sont débrouillé pour que le lien clickable me (je suis peut être pas doué) redirige vers la page d'accueil. et donc il est particulièrement chiant de retrouver une référence et pour mopi, plus aucun lien vers la dic "officielle" ne fonctionne.

      J'ai acheté 2 bouquins dont celui de serny et j'y trouve largement mon compte, même si parfois je me mélange les pinceaux.

      Ensuite je cherche pas à remplacer comme largement écrit dans mon post, je veux seulement ajouter un hook au module pour permettre de faire une barre de lien supplémentaire et je trouve particulièrement contre-productif d'utiliser un module (megamenu) qui va créer une table pour y mettre les catégories afin de faire un menu, catégories qui existent déjà dans phenixsuite.

      je crois me souvenir (il était tard ce main) que ce fichier n'existait pas ou alors je ne l'ai pas trouvé, mais j'ai tous les réglages à pas de cache. parce que c'est la première chose que j'avais regardé mais je pense me souvenir que j’avais lu que le fichier s'appelait classe_index.php ou quelque chose comme cela et je ne l'ai pas trouvé. je dois avouer que si le fichier index.php existe dans le répertour de cache, je ne l'ai même pas regardé car dans tout prestashop le fichier index est un fichier "vide" (juste une redirection) pour pallier ce soucis de conception que chaque répertoire accessible du net du logiciel ne possède pas par défaut un fichier index.php alors que la conception même d'un serveur de fichier internet (comme apache) recherche par défaut ce fichier en tout premier lieu s'il n'a pas une uri complète vers un fichier à servir.

      Maintenant j'ai bien conscience que ma manière de faire est probablement pas "prestashopienne" et je sais que dans le futur assez proche je serais amené à ré-écrire une partie de ce que je fais maintenant car même si c'est "tombé" en marche", c'est probablement largfemetn sous-optimal.

      Alors je pourrais faire à l'ancienne et écrire du code html statique dans un des fichiers tpl, puisque ce menu ne bougera pas, mais j'ai voulu le faire à la mode prestashop/phenixsuite. parce que je veux que les mises à jours se passent bien.

      Maintenant comme je suis à cheval sur 3 serveur - celui en production avec 1.7.xx, le futur en prod avec phenixsuite 1.6.30 ou je ne monte que ce qui marche et mon serveur home de travail, tous en ligne de commande dans un terminal il est possible que je n'ai pas regardé le bon serveur.

      J'en profite pour poser une question qui me taraude....

      Lorsque je veux un changement "simple" par exemple ajouter un champ au fiches produits (par exemple un 'résumé')
      -a) La possibilité "simple" est de l'ajouter dans la terminal mariadb, le remplir avec une requete insert et mofdier la vue et le formulaire d'admin.
      -b) la possibilité qui me semble la plus prestashopienne : faire des ovverrides pour modifier juste ce que j'ai changé/modifier comme dans le code proposé au dessus.
      c) - la possibilité de recul serait de faire un module qui ajoute cela en le "hookant" au même endroit....
      d) - la possibilité la plus répandue est d'acheter un module (je trouve l'univers de prestashop assez désagréable ou on a l'impression que tout est compliqué pour permettre de vendre des modules dont une bonne partie doit être si on regarde bien de sacrées merdes

      J'ai bien compris que le a est une impasse qui sera cassée à la mise à jour.

      Mais je crois me souvenir avoir lu un truc ou vous disiez que les overrides ce n'était pas une bonne idée. alors est-ce que l'override "bourrin" (je prends tout le code pour de petits modifications) est une mauvaise idée ou même un override qui ajoute 2 lignes est aussi une mauvaise idée ?

      posté dans Modules
      H
      herve_02