THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Je résumerai quand tout sera ok smile

J'ai rajouté $parsephp=1;dans panier.php
Et j'ai intégrer ton code dans panier.html

Et j'obtiens en validant le panier :

Parse error: parse error, unexpected ';' in C:\Program Files\EasyPHP 2.0b1\www\fr\ecrire\public.php(27) : eval()'d code on line 68

Last edited by mdb (07-05-2009 15:28:34)

Offline


qu'y a -t-il sur ta ligne 68 ?

jb

Offline


Ligne 68 :

include_spip('inc/minipres');

Offline


Bon...
Ptetre encore un problème lié à SPIPI, retrouvé ici :
http://forum.thelia.fr/viewtopic.php?id=2943

Le code Php d'un squelette serait interprété avant les boucles et substitutions Thélia ce qui empêcherait de mettre en place cette solution simple....

si tu vires l'instruction php mais garde juste #PANIER_NBART, que vois-tu ?

Last edited by ottoroots (07-05-2009 15:46:30)

Offline


vive SPIP \o/

(je fais que passer)


Aide les autres, ils t'aideront en retour.

Offline


Si je laisse que #PANIER_NBART, même résultat

Offline


Bon....

Donc ce n'est pas ça non plus.

Envoie ta page panier au complet pour voir...

Offline


THELIA-PANIER_NBART  marchera mieux wink


Aide les autres, ils t'aideront en retour.

Offline


#THELIA-PANIER_NBART ou THELIA-PANIER_NBART  ne fonctionne pas non plus hmm

Voici le code de inc-panier.html (inclus à panier.html)

#CACHE{7200}
					
			[(#REM) Afficher les étapes de la commande et visualiser l'étape courante ]
			<div id="etapes-achat">
			<h2 class="invisible"><:etapes_achat:></h2>
			<ul>
				<li class="etape-courante"><div><img src="[(#CHEMIN{img_pack/etape_1_on.jpg})]" alt="<:spipthelia:valider_panier:>" /></div></li>
					<li><div><img src="[(#CHEMIN{img_pack/etape_2.jpg})]" alt="<:spipthelia:identifiez_vous:>" /></div></li>					
					<li><div><img src="[(#CHEMIN{img_pack/etape_3.jpg})]" alt="<:spipthelia:choix_mode_livraison:>" /></div></li>				
					<li><div><img src="[(#CHEMIN{img_pack/etape_4.jpg})]" alt="<:spipthelia:choix_paiement:>" /></div></li>			
					<li class="derniere-etape"><div><img src="[(#CHEMIN{img_pack/etape_5.jpg})]" alt="<:spipthelia:envoyer_commande:>" /></div></li>		
			</ul>
			<br class="nettoyeur" />
			</div>

			[(#REM) Titre de la page ]
			<div class="titrePage">
				<h1><:spipthelia:mon_panier:></h1>
			</div>
				
			<T_CONTENU_PANIER>
			

			[(#REM) Contenu du panier ]

			<table id="panier">
  			<thead> 
				<tr>
    					<th class="enteteTableau"><:spipthelia:photo_produit:></th>
    					<th class="enteteTableau"><:spipthelia:references_produits:></th>
    					<th class="enteteTableau"><:spipthelia:prix_unitaire:></th>
    					<th class="enteteTableau"><:spipthelia:quantite:></th>
    					<th class="enteteTableau"><:spipthelia:actualiser:></th>
    					<th class="enteteTableau"><:spipthelia:total_ttc:></th>
    					<th class="enteteTableau"><:spipthelia:Vider:></th>
				</tr>
			</thead>

			<tbody> 
				<THELIA_CONTENU_PANIER type="PANIER">
				<tr>
					<td class="ligneTableau"><THELIA_image type="IMAGE" produit="THELIA-ID" hauteur="70" num="1"><img src="THELIA-IMAGE" /></THELIA_image></td>
					<td class="ligneTableau"><a href="#URL_PAGE{produit,ref=THELIA-REF}">THELIA-TITRE
						<THELIA_decval type="DECVAL" article="THELIA-ARTICLE">
							<br />THELIA-DECLITITRE : THELIA-VALEUR
						</THELIA_decval>
						<br />(Ref : THELIA-REF)</a>
					</td>
					<td class="ligneTableau">THELIA-PRIXU € </td>
    					<form action="#URL_PAGE{panier,lang=#LANG}" method="post" id="formpanierTHELIA-ARTICLE">
                			<td class="ligneTableau">
						<input type="hidden" name="article" value="THELIA-ARTICLE" />
                				<input type="hidden" name="thelia_action" value="modifier" />
                				<input type="hidden" name="article" value="THELIA-ARTICLE" />
                				<select name="quantite" size="1" class="zoneDeSaisie" onchange="$('#formpanierTHELIA-ARTICLE').submit()">
                				<THELIA_quantite type="QUANTITE" article="THELIA-ARTICLE" max="50">
							<option value="THELIA-NUM" THELIA-SELECTED>THELIA-NUM</option>
						</THELIA_quantite>
						</select>
						
					</td>
					<td class="ligneTableau">
						<input type="submit" class="bouton-actualiser" value="[<:spipthelia:actualiser:>]" />
					</td>
					</form>
					<td class="ligneTableau">THELIA-TOTAL €</td>
					<td class="ligneTableau"><a href="#URL_PAGE{panier,thelia_action=supprimer&thelia_article=THELIA-ARTICLE}"><img src="#CHEMIN{img_pack/spipthelia-cancel.png}" width="16" height="16" alt="<:spipthelia:supprimer:>" /></a></td>
				</tr>
				
  	  			</THELIA_CONTENU_PANIER>
			
			</tbody>
			</table>
			
			<div class="sousTableau"><:spipthelia:total_panier:> : THELIA-PANIER_TOTAL €
			</div>
					

			<br class="nettoyeur" />
				<div class="boutonMonCompteContenu">
				<a href="http://127.0.0.1/fr/spip.php?thelia_action=verifbouteille"><:spipthelia:valider_panier:></a>
				</div>
			</T_CONTENU_PANIER>
				<p><:spipthelia:panier_vide:></p>
			<//T_CONTENU_PANIER>
				<div class="boutonMonCompteContenu">
				<a href="#URL_SITE_SPIP"><:spipthelia:retour_boutique:></a>
				</div>
		
<?php
$totprod = #THELIA-PANIER_NBART;
if($totprod % 6 !==0) {
                                
echo "allez mettez-en encore quelques unes au frais";
}    
?>

Offline


Selon le wiki :

<T_PANIER>
<a href="#URL_PAGE{panier}">Votre panier contient THELIA-PANIER_NBART article(s).</a>
<THELIA_PANIER type="PANIER">
</THELIA_PANIER>
</T_PANIER>
<a href="#URL_PAGE{panier}">panier vide</a>
<//T_PANIER>

Aide les autres, ils t'aideront en retour.

Offline


Oui en effet THELIA-PANIER_NBART affiche le nombre total de produits

mais dans ce code ça ne donne rien

<?php
$totprod = THELIA-PANIER_NBART;
if($totprod % 6 !==0) {
                                
echo "allez mettez-en encore quelques unes au frais";
}

Last edited by mdb (07-05-2009 16:31:31)

Offline


<T_PANIER>
<THELIA_PANIER type="PANIER">
<?php
$totprod = THELIA-PANIER_NBART;
if($totprod % 6 !==0) {
                                
echo "allez mettez-en encore quelques unes au frais";
}
?>
</THELIA_PANIER>
</T_PANIER>
<//T_PANIER>

Aide les autres, ils t'aideront en retour.

Offline


Je ne vois rien de flagrant sur ta page (tu peux encore essayer d'inclure l'instruction php à l'intérieur de la boucle panier mais je ne parierais pas cher sur cette proposition)...

Si tu supprimes l'instruction php on est d'accord que ça fonctionne à nouveau ?

Si tu laisse seulement THELIA-PANIER_NBART, tu as bien le nombre total de produits dans le panier ?

Si oui aux 2 questions alors je ne vois plus comment t'aider : il s'agit bien d'un problème au niveau du plugin SPIP/THELIA et je n'y connais strictement rien dans ce domaine. sad

Dommage parce que la solution sur un environnement THELIA est simple et fonctionnelle (testé sur 1.3.8, 1.3.9 et 1.4)

Offline


okok ta dernière explication confirme mes doutes : avec SPIP, pas d'instruction php dans les squelettes si ces instructions doivent manipuler des boucles ou des substitutions THELIA : pour une raison que j'ignore, avec le plugin SPIP/THELIA, l'ordre semble inversé : le serveur traite d'abords le php et ensuite les boucles.

Un SPIPIEN confirmé pourrait-il venir mettre son grain de sel pliz ?

Offline


Ouin sad

Last edited by mdb (07-05-2009 17:01:36)

Offline


Du coup faut passer par le filtre que j'ai fait big_smile


Aide les autres, ils t'aideront en retour.

Offline


Bonsoir

Oui effectivement il reste cette possibilité "lourde" de tripoter le moteur... Juste pour le message d'erreur.

Comme le propose Elyos, tu créés une nouvelle substitution (par exemple #MODULO) dans substitpanier (voir l'exemple d'Elyos) : cette nouvelle substitution retourne par exemple une valeur =1 si le modulo de la division quantité de produits/6 est =0. Cela te permet ensuite de passer par une boucle conditionnelle et non du code php dans ton squelette panier.html. Dans ta boucle conditionnelle tu mets ta nouvelle substitution. Si celle-ci ne renvoies aucune valeur, alors tu prévois une petite phrase d'alerte. Ce qui ressemblera à ça :

<T_blabla>
#MODULO
</T_blabla>
vous avez THELIA-PANIER_NBART article(s) dans votre panier. Vous devez commander un nombre de produit multiple de 6 pour pouvoir passer commande.
<//T_blabla>

(non testé)

jb

Offline


Bon...

Je pensais partir sur un filtre mais tanpis... on va utiliser une nouvelle variable...

Peux-tu me fournir une ligne de code de ton fichier substitPanier.php (dossier fonctions/substitutions/) ressemblant à ça :

$texte = str_replace("#PANIER_NBART", "" . $nb_article . "", $texte);

Pour voir comment spip a modifié les variables...

Il restera à ajouter à la suite dans ce fichier :

$texte = str_replace("#PANIER_MODULO", "" . ($nb_article % 6) . "", $texte);

Et du côté html :

#FILTRE_different(#PANIER_MODULO||0||Vous devez commander un nombre de produit multiple de 6 pour pouvoir passer commande.)

Aide les autres, ils t'aideront en retour.

Offline


Bonjour,

Bon, je mets les pieds dans le plat.

Immaginons que je soit client et que je commande 199 bouteilles, on peut donc considérer que je commence à être un bon client, j'en ai à peu près pour 2000 € d'articles en considérant la bouteille à 10 € pour faire simple.
Je valide le panier et on me dit "Merci de faire des cartons de 6". Eh bien moi en tant que client, cela me met en colère, je suis prêt à claquer 2000 € et le système m'explique que soit j'en ai pris trop, soit j'en ai pas pris assez. Et je ne me vois pas sortir ma calculette pour savoir le prochain multiple de 6 à partir de 199 !!!!!!!!!!!!

La contrainte de 6 c'est la tienne, elle ne doit en aucun cas devenir la contrainte de ton client.

Donc, il faut réfléchir à l'envers, tu dois définir tes coûts de transports par cartons de 6 qu'ils soient complets ou non.
Le client prend 37 bouteilles, cela fait un coût de transports de 7 cartons.
Et là le plugin Transport, c'est de la balle cool
Et en plus tu ne touches pas au coeur de THELIA, par principe je suis toujours contre toucher au coeur du produit, car le jour où quelqu'un reprend ton site, il est mal.

Désolé de ne pas m'être exprimé plus tôt, mais il a fallu que je goute tous les produits de mon dernier site et j'étais devenu instable.

Alfouine,


Au royaume des aveugles, les borgnes sont mal vus.

Offline


bonjour,

Le plat est grand tous les pieds sont les bienvenus big_smile

Pour (tenter d') en finir avec ce sujet, je suis totalement d'accord avec toi Alfouine, je ne bloquerais pas un client à ce stade (très sensible) du parcours d'une commande... Quand on sait combien de paniers ne sont jamais transformés parce qu'il faut s'identifier, parce qu'il faut payer du port, parce que le produit n'est pas dispo immédiatement....  Rajouter une contrainte à ce stade est fort risqué à mon avis et jouera irrémédiablement sur le chiffre d'affaires...

Maintenant, je connais aussi les contraintes d'emballage et les coûts qui dans ce domaine savent très vite....S'emballer smile

Donc :

- Des solutions "lourdes" (modif moteur) sont enviseageables mais peu recommandées : un filtre, une substitution : le script Thélia a aussi cet avantage d'être léger, clair, compréhensible et donc permet d'envisager ce type de personnalisations pourvu qu'elles soient sous contrôle (COMMENTER clairement les lignes de code ajoutées, ne pas supprimer le script original mais le commenter pour pouvoir faire machine arrière) : à priori il faut que le Webmaster et le marchand soient une seule et même personne.

- Sinon, comme dit Alfouine (une fois que la mandarine a quitté son organisme) ça peut avec le temps tourner au cauchemar. Et comme il a souvent une bonne solution, il t'invite à venir voir ce qu'il a organisé pour répandre à travers la planète le meilleurs des distillations tourangelles  :

http://forum.thelia.fr/viewtopic.php?id=3136

Je ne saurais trop te conseiller d'y réfléchir avant de choisir la solution que tu implémenteras..
Si tu tiens à ton contrôle de cohérence de 6, alors la solution est disponible dans ce très long (le plus long du forum ?) post : petit plugin et modif moteur.

On a fait le tour là non ?

Amicalement,

jb

Offline


Bon bah je continue à mettre mon grain de sel...

Parfois, c'est le client (celui qui demande sa boutique en ligne) qui a des avis bien arrêtés sur ce qu'il veut et donc on ne peut aller contre ça...

On a beau dire tout ce qu'on veut il ne change pas d'avis...

Donc après, à voir si c'est mdb qui a fait ce choix, si c'est son site à lui ou à un de ses clients...

alfouine wrote:

Et en plus tu ne touches pas au coeur de THELIA, par principe je suis toujours contre toucher au coeur du produit, car le jour où quelqu'un reprend ton site, il est mal.

A chaque fois que je fais une boutique Thelia(bon ok j'en suis qu'à ma deuxième...), je suis obligé de modifier le coeur de thelia pour avoir ce que je veux à savoir un fichier qui gère toutes les pages avec un seul template global qui sert de squelette et tous les autres templates qui servent pour le contenu central.

Si ce qui est fait est propre, alors la prochaine personne à venir sur le site n'aura pas de mal à comprendre le raisonnement.

Sur la boutique que je suis en train de faire, j'ai même créé une boucle compte pour rendre dynamiques les pages mon compte et pouvoir modifier facilement des textes utilisés à droite à gauche.
Tout comme l'ajout de substitutions etc etc.

Je garde juste la même logique qu'Octolys à mis en place pour Thelia et je m'arrange un maximum pour que ce que je modifie soit identique à l'existant.

Voilà big_smile

Si vous voulez poursuivre le débat, je pense qu'il serait préférable de créer un nouveau post ^^.


Aide les autres, ils t'aideront en retour.

Offline


hello,

Nous quittons définitivement le sujet des cartons de 6 bouteilles mais c'est une discussion intéressante et je me permets de la prolonger juste quelques minutes.

1°) Je me réjouis sincèrement que des personnes de ton niveau Elyos rejoignent la communauté Thélia : tu sembles bien maîtriser la programmation et en plus tu fais partager cette expertise (c'est rare et donc particulièrement appréciable) : Thélia est un programme conçu pour attirer ceux qui justement n'ont pas envie de passer des semaines à maîtriser php avant de lancer un site : nous ne sommes donc pas en général des développeurs mais plus des webmasters voire seulement des commerçants profitant du canal Web pour exercer notre activité. Être épaulés par des programmeurs chevronnés est un vrai atout pour une communauté Open Source e j'espère qu'il en viendra d'autres de ton acabit.

2°) Ceci dit nous sommes bien une communauté, rassemblée autour d'un même et unique projet et, de ce fait, il est important de garder à l'esprit que si chacun modifie dans son coin à droite à gauche  le script, vient un moment où le programme de Dupont ne réagira plus de la même façon que le programme de Durand. Chacun aura son petit fork de Thélia et la notion de communauté se perdra. C'est un peu excessif comme façon de présenter la chose mais ce principe pousse les admin (Yoan et Manu) à mettre en garde contre une modification du moteur. tout au moins préconisent-ils de toujours tout tenter avec le code natif pour arriver à une solution.
Si ça ne marche pas il faut penser en terme de plugin et Thélia est bien fait de ce côté là aussi. La modification en dur du code source doit toujours rester l'ultime moyen de contourner un problème. Et puis recoder les modifs à chaque nouvelle version de Thélia.... 1 fois ça va, 6 mois plus tard c'est beaucoup plus pénible. Dans 2 ans quand la version 4.5 de Thélia, celle qui fait le café et répond tout seul à vos mails sera disponible....


Bref, tout ça est bien théorique, ne fait avancer aucun schmilblick mais m'aura donné l'occasion de te remercier pour tes contributions et d'essayer de donner une direction commune à nos efforts communs : nos réponses sur le forum aux questions de la communauté (communauté fort sympathique au demeurant)   smile

Offline


Je comprends très bien cela.

Et je vais pas me plaindre ou critiquer Thelia (comme certains que j'ai pu lire) car je suis très conscient que Thelia est de l'open source.

Oui, pour moi open source = faut pas se plaindre.

Car si on prend de l'open source on sait très bien que ça ne sera jamais adapté à 100% à nos besoins et que si on fait ça c'est surtout par gain de temps (et donc d'argent).

J'ai déjà fait quelques boutiques en ligne développées par mes soins pour coller au mieux avec la demande du client avec tout ce que ça comprend, tous les paiements qu'il souhaite, les doubles tailles (taille, longueur), les différents types de réductions (bon de réduction, avoir, remise client, compte de créditation, palier commandes), les ventes flash, les newsletters, la comptabilité, les suivis commandes et blablabla.

(Celui qui souhaite, me contacter en privé pour montrer un exemple ou deux)

Moi je modifie dans mon coin car je sais (c'est un peu prétentieux mais bon...) que le client continuera à bosser avec moi.
Pas parce que je suis le meilleur (loin de là) mais parce que je fais du travail correct contrairement aux développeurs qu'ils ont connu précédemment.

Pour finir, tout ce que je dis sur le forum, les remarques, mes modifications etc c'est pas "dans le vent". C'est pour (entre autre) faire réagir les développeurs de Thelia en leur donnant des idées et pourquoi pas les mettre en place dans les versions prochaines. Et je suis prêt, sans aucun problème, à apporter mon aide et mon expérience en matière de boutique en ligne.


Aide les autres, ils t'aideront en retour.

  • manu
  • faï tot petar miladiu

Offline


allez zou jmets mon pied dans le plat aussi, le sujet dérive mais de toute facon je pense que mdb aura trouvé les réponses qu'il souhaite dans les posts précédents.

Alors je trouve la réflexion d'alfouine très pertinante, à savoir ne pas se soucier du nombre d'article dans le panier et faire son calcul ensuite pour le transport.

Sinon pour vous donner mon point de vue de l'intérieur smile :

- bien évidemment nous ne conseillons pas de modifier le moteur de Thelia, pour une simple et bonne raison évoqué par ottoroots : les mises à jour. Parceque par la suite soit on les fait pas soit on passe trois plombes a refaire les modifs et par conséquent on augmente le risque d'erreurs. Mais bon, ce n'est qu'un conseil, ca ne nous cause aucun problème si vous modifiez le moteur mais je trouve dommage par la suite de se priver des maj de Thelia, comme par exemple la prochaine avec l'admin, qu'on a réalisé avec plaisir smile et puis sans parler d'une version qui corrige une faille de sécurité (ben oui ca fait longtemps qu'on en a pas trouvé mais un jour ca arrivera).

- un système de plugins est mis en place, certes je peux convenir qu'à certains moments ca peut être fastidieux de développer un plugin, alors que rajouter 3 lignes de code dans le moteur réglerait le problème. On améliore à peu près à chaque nouvelle version le système de plugin en rajoutant des points d'entrées.

Thelia est libre donc libre à vous de choisir la solution qui vous convient le mieux (modification moteur vs plugins).

On prend bien sur en considération tout ce qui se dit sur le forum, j'avais ouvert un post pour demander vos attentes par rapport à la version 1.4.0, en particulier l'admin. On a essayé de prendre en compte au maximum vos considérations, certaines ne le seront pas, pour divers raisons.

Voila donc quelque soit la décision que vous prenez, vous contribuez à votre manière à Thelia et pour ca on peut dire merci smile

Allez un ptit peu de HS pour terminer smile

- Pour nous Thelia n'est pas open-source mais libre. Oui je sais ca fait jouer sur les mots ca lol, mais on (yoan et moi) entretient une certaines philosophies du logiciel libre, qui va plus loin que la simple licence qui définit un logiciel, mais tout ce qui l'entoure. Pour moi l'open source, c'est surfer sur la vague du logiciel libre, en disant notre logiciel est open-source mais pour certaines portions de code on veut pas qu'elle soit libre, tel module n'est pas libre etc (et c'est ce qu'est réellement la licence open-source http://www.opensource.org/ ). Donc c'est une licence bancale a mi chemin entre libre et propriétaire.

- Libre ne veut pas dire non plus ne pas se plaindre, en se plaignant on fait parfois avancer le shmilblik, même si parfois ca peut être rageant lol

- et dernier point pour moi libre = répondre à 100% à mes besoins, car je l'adapterais à mes besoins. Donc oui je suis d'accord quand on prend une solution libre, sans rien modifier elle répond pas à toutes nos attentes, mais c'est fait en sorte que ca le devienne smile

Voila, bien évidemment tout ce petit HS n'engage que moi et ce n'est que mon point de vue et j'accepte tout à fait que d'autres en ait un différent smile


http://doc.thelia.net/
http://thelia.net/modules
http://raynaud.io
PGP public Key : 0xC6E546A6

Offline


J'hésitais à répondre car je ne savais trop quoi dire mais j'ai trouvé big_smile

Je comprends tout à fait ton(votre) point de vue.

C'est sur que pour les mises à jour c'est pratique sauf que Thelia ne peut évoluer que dans le sens que vous avez choisi au départ.

Exemple :
Si un jour vous décidez de travailler comme je le fais au niveau des templates (un template squelette et des templates de contenu central), il faudra faire une réinstallation complète car une mise à jour ne sera pas envisageable.
Je me trompe ?


Après moi je veux bien travailler qu'avec des plugins mais le souci est que dans certains cas je ne vois pas du tout comment faire ce que je veux avec un plugin.

Exemple 1 :
Je voulais faire apparaitre le nombre total de commandes d'un client dans un menu "Mon compte".
Je suis donc passé par le fichier substitclient.php pour le faire.

Exemple 2 :
Je voulais que mes noms d'images uploadées prennent le nom du produit, de la rubrique,... correspondant sans caractères spéciaux (pour un souci de validité W3C et de référencement). (voir post : http://forum.thelia.fr/viewtopic.php?id=3144)
J'ai donc modifié les fichiers de l'admin.

Je vois pas trop comment le faire par un plugin sans modifier les fichiers natifs de Thelia ou bien j'ai pas tout capté encore. ^^

Last edited by Elyos (08-05-2009 17:04:37)


Aide les autres, ils t'aideront en retour.