[thème] DefoShop

Une addition très attendue à la série des thèmes concept Defo, un système complet de commerce en ligne. Je dis complet mais DefoShop est tout de même assez minimaliste pour être étudié par les braves créateurs de thèmes ou intéressés à étudier la chose e-commerce.

Une mise en garde aux nouveaux, ceci n'est pas un thème simple qu'on déballe et utilise immédiatement. Il est nécessaire d'avoir une compréhension au moins moyenne des modules de PluXml et une main habile pour faire des modifications. Ces modifications comme la configuration du compte Paypal ou du format monétaire seront un jeu d'enfant pour les habitués et un cauchemar pour les fébriles à la main baladeuse. Nous parlons de transactions monétaires avec vos visiteurs, ne prenez pas la chance de ruiner votre réputation en provoquant des erreurs de transfert avec Paypal.

Ceci dit, le système travaille très bien, il combine une version par défaut de PluXml et un module javascript appelé jCart qui combine des écrans de boutique avec un panier perpétuel qui fonctionne par cookie de session. Ce jeu de scripts a pris de l'âge au fil des ans et a été abandonné par ses créateurs, probablement des étudiants maintenant gradués qui ont mieux à faire. Même son forum a cessé d'accepter des billets mais le système est tellement simple qu'il a fonctionné après quelques versions et tout le monde a détourné le regard ensuite. Je ferai de mon mieux pour expliquer ou suggérer des modifications possibles mais vous comprenez les limites de ma compréhension. Pour vous rassurer, le système original a été adopté par plusieurs autres plateformes comme Joomla et Wordpress, rien de moins. Les gentils créateurs de ces plugins vendent à gros prix leur adaptation maison de notre petit héros, vous avez le plaisir de l'avoir gratuitement puisque la version originale est toujours offerte sans frais.

Quelques appels sont faits aux fichiers de jCart dans les pages article-shop.php, catégorie-shop.php, static-shop.php et le header.php, tout le reste est réservé au seul répertoire "/jcart". Contraire à ma nouvelle religion de ne jamais toucher au core, une toute petite ligne doit être ajoutée au fichier index.php du répertoire racine. La raison en est que les scripts de jCart doivent être en place avant le lancement de la session. La modification "hors-normes" est donc d'insérer:
[== PHP ==]
include_once(PLX_ROOT.'/themes/defoShop/jcart/jcart.php');

quelque part au début de votre-adresse-racine/index.php , par exemple juste après les premiers include mais certainement avant la ligne
[== PHP ==]
session_start();

Le formatage a été réduit à sa plus simple expression, un mélange du thème par défaut et de la mouture originale de jCart. Je me suis permis d'ajouter une image d'accroche pour lui donner une saveur plus "boutique" et moins tutorielle. Les fichiers du répertoire /jcart conservent la structure originale. Les plus studieux vont possiblement la télécharger, ça facilitera leur transfert de compréhension de l'un à l'autre.

Réponses

  • PierrePierre Member
    juillet 2016 modifié
    J'oubliais de mentionner un point important, j'utilise le champ Chapô comme champ de prix de vente. Cette contrainte est réduite par le fait que chaque produit devient un article qui peut être assigné à une (ou plusieurs) catégorie et ainsi ne pas tout foutre en l'air le formatage des articles blog plus traditionnels. On évitera, par exemple, d'atttribuer la catégorie "page d'accueil" à ces articles, ce qui ne les fera pas apparaître dans la liste de la une avec ces étranges chapôs numériques. Une petite passe-passe est faite dans le code pour transformer la chaîne textuelle de notre prix de vente en véritable valeur numérique avant de la lancer comme variable dans les scripts.

    D'autres points me reviendront à la mémoire sans doute mais celui-ci est un aspect majeur de la simplicité désirée par votre humble serviteur.
  • Bonjour Pierre, :)

    Je n'ai pas pu résister à la tentation de tester DefoShop mais me heurte à un message d'erreur en index du site...
    [== Indéfini ==]
    Edit the path in jcart.js to fix
    

    Qu'en est-il ?
  • Il en est qu'il faut comprendre:

    - comment fonctionne PluXml
    - comment fonctionne jCart dans sa version d'origine
    - où sont les fichiers pertinents (la partie facile)

    Le fichier se trouve dans /jcart/js et ne demanderait normalement aucun ajustement si le répertoire du thème est soigneusement nommé "defoShop", ce qui n'est probablement pas le cas après téléchargement. Il faut donc corriger un des deux, le nom du répertoire ou le nom dans le paramètre à l'endroit où est écrit "Edit as needed if using a different directory structure", vers la ligne 12. Ceci est la première (et très simple en comparaison) d'une liste de modifications à faire pour voir la lumière au bout du tunnel. Considérez-vous avertis.
  • Oui, merci, c'était ça et même en sachant comment fonctionne PluXml, jCart et où sont les fichiers pertinents, ce genre d'erreur pourrait être évité en testant ses productions après dés-emballage. :-//

    Cela dit, Madame Irma étant déjà partie en vacance, il est assez difficile de savoir comment fonctionne la chose et un petit tuto serait le bienvenu ainsi que la mention qu'il faille rajouter un bout de code dans l'index de la racine dans le fichier INSTALL.txt.

    En général, on fréquente les forums quand on a des problèmes. Pas avant. ;)
  • Le thème fait partie d'une suite très clairement identifiée comme ayant pour but l'étude de cas. Je ne répèterai jamais assez qu'aucun d'entre eux ne doit être considéré comme un véritable thème.

    Des douzaines de petits points très techniques sont à étudier et à modifier pour arriver à ses fins, la plupart sont causés par des contraintes de PluXml. J'ai eu quelques conversations avec Stéphane à ce propos, on verra si l'avenir nous réserve des modifications qui rendront la vie plus simple aux personnes qui veulent sauter l'étape de comprendre ce qui se passe. Ce serait bien, j'en conviendrai volontier, mais le produit est ainsi fait. Il demande de comprendre que la pratique ne suivra pas tout de suite la théorie au sortir de la boîte.

    Je ne pourrai que redire une douzième fois que les nouveaux sont bienvenus pour étudier le cas, et pourquoi pas poser une question ou deux, mais le théoricien choisira lui-même comment occuper son temps précieux. Les tutoriels pour PluXml et pour jCart sont là pour vous servir, je peux promettre que cette lecture sera bénéfique à tous.

    On fréquente tous les forums pour nos propres raisons, la mienne est de faire avancer la compréhension de PluXml et de ses innombrables possibilités. Il faut travailler, on est pas chez Wix, le produit avance à la vitesse que son créateur/développeur choisit et choisira encore le plus longtemps possible.
  • Bigre, on dirait que tu parles à un bleu qui débarque chez Pluxml et ne sait pas ce que "entre-aide" veut dire.

    Les raisonnements c'est bien mais des trucs qui fonctionnent est nettement mieux.
    Le thème fait partie d'une suite très clairement identifiée comme ayant pour but l'étude de cas. Je ne répèterai jamais assez qu'aucun d'entre eux ne doit être considéré comme un véritable thème.

    Là, nous sommes dans un cas de figure où il y a un loup quelque part et tu devrait demander à Stéphane de te créer une rubrique "Etude de cas" pour caser tes tests car les utilisateurs finaux ne sont pas des bêtas testeurs compétants mais des gens qui ont besoin d'un truc joli qui fonctionne.

    La rubrique "Ressources" est faite pour des thèmes fonctionnels (compliqués ou pas) et pas pour des trucs qui ne marchent pas.

    Pour en revenir à DefoShop, ça merde point/barre et en regardant la source, je me suis rendu compte que ce n'était pas gagné celui qui ne code pas ne pouvant en aucun cas s'en sortir et celui-qui-sait n'a pas besoin de de ce genre de bricolage.

    De plus, il est fait avec Jcart qui a peut-être eu son succès au siècle dernier mais n'est plus maintenu ni mis à jour (officiel) et souffrirait de problèmes de sécurité au point que le sujet a été débattu ici-même sur ces forums.

    En plus, il est moche et il faut être intégrateur et designer pour avoir une jolie page.

    Ces derniers se garderaient bien d’utiliser ce script qui a maintenant fait son temps.
  • Il me fait plaisir de parler à tous les visiteurs du forum, peu importe leur degré de compréhension de notre outil adoré. Je règle autant que je peux les petits problèmes des nouveaux, ces petits problèmes doivent être à la hauteur de ma connaissance qui n'est pas stratosphérique.

    Les thèmes (ordinaires) que j'installe sur la rubrique Ressources demandent tous un degré au moins moyen de compréhension des rouages de base de PluXml. J'aimerais honnêtement que tout soit déjà prévu pour que le système fonctionne clé-en-main à chaque coup, j'ai même la liste exacte de ce que cela demanderait comme modification. Stéphane n'a que deux mains et ses journées n'ont probablement que 24 heures aussi, je le laisse décider des priorités de développement. Je lui communique mes souhaits et désirs, certains sont acceptés et d'autres sont refusés. Je donne le temps au temps pour faire son travail. Parlant de temps, si tu appelles 2013 le siècle dernier, on a un plus gros problème qu'un simple changement de chemin relatif dans le code...

    Les thèmes de la série Defo sont extrêmement faciles à distinguer, les clients exigeants et/ou impatients sont invités à les contourner, je n'ai pas le contrôle sur les sous-rubriques. J'utilise la photo du thème par défaut pour aider ceux qui n'auraient pas lu les lettres d-e-f-o qui débutent le nom de chacun de ces thèmes concepts très appréciés des experts qui se grattent un peu moins la tête. Lesdits experts t'expliqueront que ce thème fonctionne très bien, qu'il n'est pas simple de coudre les morceaux ensemble mais qu'il n'y avait pas d'alternative.

    Les questions sont encore les bienvenues.
  • La question est revenue, si j'utiliserais éventuellement cet outil pour construire un thème à proprement dit, la réponse est oui.

    Je travaille sur le gabarit appelé e-shopper que j'ai mentionné à quelques occasions. Vous pouvez y jeter un coup d'oeil et déjà voir si vos besoins sont très différents et si d'autres fonctions seraient cruellement manquantes. Pour guider un peu, le sélecteur de fourchette de prix devrait survivre et faire partie du lot, les publicités vont avoir leur propre catégorie. L'article de produit va gagner en flexibilité par l'inclusion de metadonnées, un genre de liste incluant le prix, les choix d'images multiples, des critères sélectionnables comme la couleur, etc.

    Les photographes pourvus d'une fameuse "soft white box" vont tout de suite y voir le Nirvana mais peut-être que le produit que vous vendez ne se prête pas bien à ce gabarit. Pas de problème à fouiller dans les catalogues pour piger quelque chose de plus pertinent.
  • on a un plus gros problème qu'un simple changement de chemin relatif dans le code...

    Oui, bien plus gros. :-//
  • Une erreur un peu cocasse s'est produite sur la page static-shop.php, son contenu a été copié-collé en double.

    Désolé! pas besoin de produire une version remise à jour, l'erreur est trop facile à corriger. Cette page a peu de chances d'être utilisée, la version de type catégorie a une utilité plus évidente. Je voulais créer une variante pour afficher que lastArtList peut facilement remplacer la boucle WHILE utilisée dans l'accueil et la page de catégorie. Pas besoin de le dire deux fois pour prouver le point! Il est tard...
  • ppmtppmt Member
    juillet 2016 modifié
    Salut Pierre,

    je suis en train de regarder ce theme moi aussi et je rencontre un petit probleme. si j'ouvre une page de blog ou une page statique j'ai une erreur sur jcart.js

    Ajax error: Edit the path in jcart.js to fix.

    J'ai bien verifie que le theme s'appele defoShop.

    En verifiant avec firefox debug je vois ca :

    GET XHR *ttp://pluxml.ppmt.org/article6/themes/defoShop/jcart/config-loader.php

    c'est moi qui ne comprend pas quelquechose?
  • Je viens de refaire le test avec une installation neuve téléchargée et tout fonctionne parfaitement. Il s'agit peut-être de la gestion de la cache ou des cookies de session, il y a parfois un délai si le navigateur conserve les variables pendant un certain temps. Moi je configure toujours mon navigateur pour tout balancer quand je ferme le logiciel, c'est plus rapide de fermer et réouvrir que de chercher à quel endroit on doit peser pour liquider les sessions indésirables.

    Il ne faut pas oublier d'insérer la fameuse ligne dans index.php de la racine mais l'erreur décrite réfère beaucoup plus au chemin bien écrit vers le bon répertoire. J'ai même eu la même erreur quand j'ai installé le répertoire avec un nom différent pour ne pas écraser ma version, j'ai dû renommer mon répertoire et tout est revenu correctement.

    Pour ce qui est de la configuration des articles, ils doivent se faire attribuer le gabarit article-shop.php , et une catégorie qui elle aura reçu le gabarit categorie-shop.php. La page static-shop fait un peu le même travail. En passant, svp effacer le ridicule dédoublement du contenu de cette page statique, crampe de cerveau inoffensive mais un peu rigolotte.

    La structure que je lis dans ton url m'inquiète un peu, une page d'article semble contenir tes thèmes, je trouve ça peu probable.
  • La structure dont tu parles me fait ca avec toutes les pages statiques et aussi les articles du blog. J'ai essaye de changer les templates pour les articles et categorie mais ca ne change rien.

    Je n'ai pas trop le temps d'approfondir en ce moment avec les vacances qui approche donc on verra plus tard au besoin.
  • PierrePierre Member
    juillet 2016 modifié
    Je suggère, comme toujours, d'installer un PluXml tout neuf avec une poignée d'articles simples et aucun plugin. En mettant tout ça en ligne, on pourra travailler s'il reste des problèmes. Il faut se rappeler qu'à la fin, rien de tout ça ne deviendra un site web, ça sert à comprendre comment fonctionne une boutique et adapter les pages si on en a la compréhension et les connaissances nécessaires.

    Le principe de base est d'assigner les produits à la catégorie "shop" (qui elle aura reçu le gabarit categorie-shop.php) avec un prix dans le chapo et une image d'accroche. L'article utilise le gabarit article-shop.php pour bien le séparer des articles de type blog qui peuvent très bien co-exister. Ces derniers peuvent se voir assigner des catégories et des gabarits qui n'ont rien avoir avec la boutique.
  • Pour les studieux qui font le tour des pages, vous remarquerez qu'il n'est pas possible d'afficher deux fois le panier sur la même page, même dans la cas installé du panier dans la sidebar et l'affichage éventuel de la page static-checkout.php qui est, ni plus ni moins, qu'une représentation différente de la même information. Le système interdit cette duplication parce qu'elle permettrait de faire des modifications dans un panier qui ne se répercuteraient pas dans l'autre.

    Pour éviter le désagrément du crash de page dans cette situation, j'utilise un simple "test de mode" qui interroge si nous sommes dans une page statique et si oui, si cette page porte le numéro de la page statique utilisant le gabarit static-checkout.php, j'ai mis le numéro 99 dans mon exemple:
    [== PHP ==]
    <? if(($plxShow->plxMotor->mode == 'static') and ($plxShow->staticId() == '99')) { 
    	echo 'voir le panier dans la page';
    }else{
    	$jcart->display_cart(); 	
    } ?>
    

    Je travaille à extraire le code de la fonction display_cart() pour me permettre de formater ce fameux panier avec différentes feuilles de style selon l'endroit où le panier s'affiche. Dans l'exemple ci-haut, il est bien évident que l'espace de la sidebar nous force à restreindre la quantité d'information affichée alors que la page statique offre toute la latitude pour une gigantesque feuille de confirmation de commande avant de passer à la caisse chez Paypal. On avance...
  • cpalocpalo Member
    janvier 2017 modifié
    Bonjour Pierre,

    Je traine depuis un petit bout de temps pour faire une mise à jour d'un site utilisant jscart pour vendre quelques produits (http://vegelab.fr). J'avais également vu ce script que j'avais testé.
    Petite question avant de me lancer dans un éventuel développement car le plugin myShop pour pluxml n'est pas encore abouti).
    Ce que souhaite le client (=vendeur) :
    - lorsque le client valide sa commande, il doit saisir un renseignement qui parviendra au vendeur (sur le site en question, c'est :"qui a été le prescripteur")
    - lorsque Paypal renvoie au vendeur la récapitulatif de la commande, ce renseignement (sur le site en question, " qui a été le prescripteur")
    Si c'est possible (et je pense que oui mais j'ai quelques lacunes dans la programmation), alors je me lance, y compris dans la création d'un thème.

    Cordialement
  • J'avoue ne pas comprendre complètement la question mais je me lance quand même, on pourra préciser ensuite.

    Le système ne transmet absolument rien à l'acheteur (ni au vendeur) pour confirmer la commande, ni avant qu'elle ne soit payée, ni après. C'est Paypal qui est le seul envoyeur d'information sur la commande. Un client pourrait même tout faire sur le site de commerce et abandonner la transaction une fois arrivé chez Paypal.

    Parce que le vendeur et l'acheteur sont tous deux branchés avec un compte chez Paypal, ils reçoivent les informations que la transaction a bien eu lieu. PluXml fait le travail de vitrine mais ne traite pas l'aspect monétaire, autrement dit la véritable transaction. Ceci n'empêche pas PluXml de fournir une description très précise du produit, de ses options, de son prix, etc, pour bien identifier les détails d'une commande unique.

    Ma suggestion est d'installer le thème concept et de patauger un peu avant de lancer le chantier d'un site ou même d'un thème. C'est déjà un gros morceau de comprendre tous les aspects d'un site transactionnel, aussi bien ne pas s'encombrer de CSS et de visuel qui n'y ont rien avoir. Une fois que jCart est bien maîtrisé, ses éléments sont plus faciles à intégrer dans un thème en dissociant leurs fichiers de style ou de fonctions. Si le choix de thème e-commerce s'arrête sur un gabarit téléchargeable gratuitement, il me fera plaisir d'assister pour sa conversion en PluXml.

    En attendant la suite.
  • Merci pour ta réponse.
    Je pense que je dois d'abord travailler sur les infos envoyées à Paypal ( je vais donc essayer d'apprendre ce qui est possible de faire pour personnaliser ce que Paypal renvoie comme mail au vendeur lorsqu'il y a un achat).
    Mon client souhaite qu'il y ait le renseignement saisi sur le formulaire du panier.

    Une fois réglé cela, je pourrai travailler sur un thème et sur un script de panier ( je regarde aussi minicart.js).
    Ton thème me plait bien car à l'inverse du plugin en question(myShop) on travaille sur une liste d'articles (et non des pages statiques). Mais le plugin était bien avancé.

    Cordialement
  • PierrePierre Member
    janvier 2017 modifié
    Les variables envoyées à Paypal pour bien identifier un item peuvent prendre plusieurs visages mais Paypal garde le contrôle pour ne pas servir de canal de marketing. On passe donc des données très classiques comme le prix, quelques options comme la taille ou la couleur mais on n'a pas de véhicule pour un message du type "ne manquez pas nos spéciaux d'après les fêtes" à moins de mettre ce message partout dans toutes les descriptions. Le message à l'écran de Paypal a pour but de confirmer que le bon produit est sur le point d'être commandé, c'est ce même message qui partira chez le client une fois accepté.

    J'ai visité et testé tout ce que j'ai pu trouver comme scripts de panier d'achat, minicart inclus, et j'ai arrêté mon choix sur jCart pour sa simplicité et sa structure de pages. Minicart est codé en javascript "strict", c'est un peu plus loin du php intégré qu'on utilise avec PluXml.

    Le thème est le thème par défaut, sans plus. Il ne sert que de support familier pour s'y retrouver entre les pages de catégorie et d'article. De cette façon, on travaille en terrain connu minimaliste qui fait ressortir les sections propres à jCart.
Connectez-vous ou Inscrivez-vous pour répondre.