vente en ligne, ecommerce

Thélia

Pour utiliser les boucles Thélia dans vos squelettes

Une approche basée sur l’utilisation conjointe des deux logiciels SPIP et Thélia pour la réalisation de sites de publication et de vente en ligne

Description

Thélia est un logiciel libre de vente en ligne basé sur un système boucle/balise très proche de celui de SPIP.

Ce plugin permet d’activer le moteur de Thélia [1] après celui de SPIP lors du calcul des pages, ce qui va vous permettre d’utiliser directement les boucles au format Thélia dans vos squelettes :
-  vous gérez votre site SPIP et le catalogue Thélia depuis l’espace privé SPIP

Le plugin est livré avec tous les squelettes spécifiques pour la vente en ligne : panier.html commande.html .... basés sur la dist, et prêts à être personnalisés.

Documentations complémentaires


-  Utilisation avancée du plugin Thélia
-  Insérer des produits Thélia dans les articles
-  Wiki Thélia

Installation

Pour fonctionner, ce plugin requiert une installation préalable du logiciel Thélia en version 1.3.3 ou supérieure et dans le même répertoire que SPIP.

C’est à dire qu’après l’install vous devriez avoir une arborescence du style :

/
   /admin
   /classes
   /client
   /config
   /ecrire
   /fonctions
   /IMG
   /lib
   /local
   /oo
   /plugins
   /template
   /tmp
   index.php
   spip.php
   ...etc...

Je vous invite à consulter le site de Thélia pour obtenir toutes les informations nécessaires sur l’installation de thélia (en gros, copiez les fichiers puis lancez /install) [2].

Vous pouvez installer SPIP et Thélia dans la même base.

Etape 1 : Installation du plugin.

Récupérez le zip du plugin thélia, ainsi que celui du plugin CFG, sur l’espace de téléchargement de la Zone : https://files.spip.net/spip-zone/ [3]. L’installation se déroule ensuite comme pour tous les autres plugins, cf. https://www.spip.net/fr_article3396.html

L’installation se fait dans le répertoire /plugins/plugin-thelia

Etape 2 : Fichiers de redirection.

Vous avez deux possibilités :
-  copier les fichiers contenus dans le répertoire plugin-thelia/pb_htaccess à la racine de votre site (recommandé)
-  ou copier le contenu du fichier htaccess.plugin_thelia.txt fourni avec le plugin dans le fichier .htaccess à la racine de votre site.

Pour spip 2.0 et Thélia < 1.5.1 vous devez également :
-  modifier le fichier /ecrire/inc/utils.php et mettre en commentaire la fonction chemin() (ligne 671),
-  copier le contenu du répertoire plugin-thelia/squelettes_spip2.0 dans votre répertoire /squelettes

Pour Thélia 1.5 (inutile pour Thélia 1.5.1), vous devez :
-  désactiver l’encodage en UTF8 dans le panneau CFG du plugin Thélia
-  remplacer dans le fichier /fonctions/hierarchie.php les fonctions suivantes : (Merci à A. Bourdeau pour cette information)

// Renvoie le chemin pour aller à une hierarchie d'objets, avec protection contre les
// références circulaires dans la hiérarchie d'objets.
function _chemin($id, $nomobj, $lang=1){

	$ids = array();

	$tab = array();

	$tobj = new $nomobj();
	$tobj->parent = $id;

	$objdesc = $nomobj."desc";

	// On doit toujours retourner au moins un element, sinon bouclage dans l'admin...
	$tab[] = new $objdesc();

	$idx = 0;

	while(intval($tobj->parent) != 0) {
		$ids[] = $tobj->parent;

		$tobjdesc = new $objdesc();

		if (intval($tobj->parent) > 0 && $tobj->charger($tobj->parent) && $tobjdesc->charger($tobj->id, $lang))
		{
			if (in_array($tobj->parent, $ids))
			{
				die("Référence circulaire détectée dans la hiérarchie des ${nomobj}s à partir de l'ID=$tobj->id. Chemin: ".implode(" -&gt; ", $ids));
			}

			$tab[$idx++] = $tobjdesc;
		}
		else
		{
			// Chargement impossible -> arrêt
			break;
		}

	}

	return $tab;
}

// renvoie le chemin pour aller à une rubrique donnée
function chemin($id, $lang=1){
	return _chemin($id, 'Rubrique', $lang);
}

// renvoie le chemin vers un dossier
function chemin_dos($id, $lang=1){
	return _chemin($id, 'Dossier', $lang);
}

par :

// Renvoie le chemin pour aller à une hierarchie d'objets, avec protection contre les
// références circulaires dans la hiérarchie d'objets.
function _chemin_thelia($id, $nomobj, $lang=1){

	$ids = array();

	$tab = array();

	$tobj = new $nomobj();
	$tobj->parent = $id;

	$objdesc = $nomobj."desc";

	// On doit toujours retourner au moins un element, sinon bouclage dans l'admin...
	$tab[] = new $objdesc();

	$idx = 0;

	while(intval($tobj->parent) != 0) {
		$ids[] = $tobj->parent;

		$tobjdesc = new $objdesc();

		if (intval($tobj->parent) > 0 && $tobj->charger($tobj->parent) && $tobjdesc->charger($tobj->id, $lang))
		{
			if (in_array($tobj->parent, $ids))
			{
				die("Référence circulaire détectée dans la hiérarchie des ${nomobj}s à partir de l'ID=$tobj->id. Chemin: ".implode(" -&gt; ", $ids));
			}

			$tab[$idx++] = $tobjdesc;
		}
		else
		{
			// Chargement impossible -> arrêt
			break;
		}

	}

	return $tab;
}

// renvoie le chemin pour aller à une rubrique donnée
function chemin($id, $lang=1){
	return _chemin_thelia($id, 'Rubrique', $lang);
}

// renvoie le chemin vers un dossier
function chemin_dos($id, $lang=1){
	return _chemin_thelia($id, 'Dossier', $lang);
}

Pour zpip, vous devez :
-  copier le contenu du répertoire plugin-thelia/squelettes_zpip dans votre répertoire /squelettes

Un bouton vous permet d’accéder au catalogue Thélia depuis l’espace privé SPIP (Edition->Catalogue Thélia) :

Modification légère de la syntaxe de Thélia

Certaines balises Thélia sont identiques aux balises SPIP, par exemple #TITRE, #CHAPO. Pour éviter une confusion entre les deux moteurs, il sera nécessaire de modifier légèrement la syntaxe des balises Thélia.

La modification à faire est la suivante : préfixer les balises du mot THELIA- et supprimer le caractère #.

Ainsi, la balise #TITRE se rapportant à un titre Thélia doit être renommée THELIA-TITRE

Exemple de boucle Thélia

Pour illustrer la ressemblance entre la syntaxe SPIP et la syntaxe Thélia, voici un exemple de boucle simple (liste des rubriques du site)

Boucle SPIP :

<ul>
<BOUCLE_rubriques(RUBRIQUES)>
	<li><a href="#URL_RUBRIQUE">#TITRE</a></li>
</BOUCLE_rubriques>
</ul>

Boucle Thélia :

<ul>
<THELIA_rubriques type="RUBRIQUE">
	<li><a href="#URL">#TITRE</a></li>
</THELIA_rubriques>
</ul>

Boucle Thélia adaptée pour le plugin :

<ul>
<THELIA_rubriques type="RUBRIQUE">
	 <li><a href="THELIA-URL">THELIA-TITRE</a></li>
</THELIA_rubriques>
</ul>

Pour en savoir plus sur les boucles et balises Thélia, consultez le wiki Thélia

Notes

[1Depuis 2014, Thelia propose une nouvelle version v2 qui n’est plus compatible : vous devez toujours utiliser la version 1.5.4.2 de Thélia, que vous trouverez sur SourceForge..

[2Après l’installation vous n’avez plus besoin de copier le contenu du répertoire template à la racine de votre site

[3En cas de problême sur ce lien de téléchargement voir les sites miroirs

Pour aller plus loin avec le plugin : url-rewriting, association produits Thélia / articles SPIP, multilinguisme... reportez vous à l’article : utilisation avancée du Plugin Thélia.

Discussion

304 discussions

  • 5
    en détresse

    Bonjour à tous !

    Je rencontre de gros soucis lors de l’utilisation du plugin thelia. Je ne parvient pas du tout à le faire fonctionner. J’ai pourtant suivi pas à pas la démarche, j’ai également essayé avec plusieurs version de thelia, mais à chaque fois le même problème intervient : les balises thelia ne sont pas interprétées.

    J’ai donc droit à de jolis THELIA-TITRE sur mes pages, et ce même avec le squelette par défaut !

    Le pire c’est que j’ai précédemment réalisé un autre site avec spip+thelia, mais aujourd’hui je ne vois pas ce qu’il se passe...

    Avez-vous une idée ?

    merci

    • l’activation du plugin n’a pas soulevé d’erreur dans l’espace privé ? tout se passe comme si le moteur thélia n’était pas appelé sur la page.

      Quels sont les autres plugins installés ? essaie de les désctiver un par un pour voir.

      As-tu un lien à nous donner ?

      ++

    • en détresse

      Je n’ai malheureusement pas de liens encore à vous donner : je travaille pour le moment en local. Je vais essayer de voir ce que ça donne une fois en ligne...

      l’activation du plugin n’a retourné aucune erreur dans l’espace privé.

      Pour ce qui est des plugins, il s’agit des 2 nécessaires : CFG et...plugin Thelia !

      Je travaille pour le moment sur une installation « par défaut » vraiment basique !

      Merci tout de même de votre intérêt pour mon problème.

    • en détresse

      Je viens de tester la même manip’ en ligne..ça fonctionne !
      J’aimerai quand même élucider ce problème pour pouvoir travailler correctement en local.
      J’utilise wampserver2.0
      La seule configuration que j’ai touché conserne apache : j’ai fait en sorte que le fichier .htaccess s’apelle simplement htaccess (windows interdit la création de fichiers commençant par un point)
      D’où pourrait venir ce problème ?

    • C’est bizarre en effet !

      un pb d’encodage des caractères peut-être..

    • en détresse

      Comment suis-je censé résoudre ce potentiel problème d’encodage ? A quel niveau ?

    Répondre à ce message

  • 2

    Bonjour,

    J’essaye de créer un nouveau plugin pour thelia de façon à permettre d’ajouter un commentaire lors d’une commande. Pour cela, je m’inspire du plugin « commentaires » disponible dans les contributions de thelia.

    Mais je rencontre déjà mon premier problème : impossible de faire fonctionner correctement ce plugin sous spip-thelia.

    -  La partie création de la table commentaires dans thelia à fonctionnée :
    la table commentaires à bien été ajoutée dans la base

    -  La partie boucle fonctionne aussi :
    si j’insère un commentaire à la main dans la base, il m’est possible de l’afficher sur une page.

    -  Mais la partie action ne fonctionne pas.
    J’ai beau essayer toutes les combinaisons qui me viennent à l’esprit, rien y fait : impossible d’insérer un commentaire dans la base à partir d’une page produit.

    Un exemple du formulaire que j’utilise dans la page produit.html :

    <form action="#URL_PAGE{produit, ref=THELIA-REF&id_rubrique=THELIA-RUBRIQUE_ID}" method="post" name="uncommentaire" id="uncommentaire">
    	<input type="hidden" name="thelia_action" value="ajcommentaire" />
    	<input type="hidden" name="commentaire_ref" value="THELIA-PRODUIT_REF" />
    	Nom : <input type="text" name="commentaire_nom" /><br />
    	Message : <input type="text" name="commentaire_message" /><br />
    	<input type="submit" value="OK" />
    </form>

    J’ai aussi essayé d’ajouter dans l’url la mention thelia_action=ajcommentaire, mais ça n’a pas améliorer la situation.

    Y aurait-il une astuce ou une contrainte à spip-thelia qui pourrait expliquer mon problème ?

    Y a-t-il une erreur que je n’ai pas vue dans le formulaire ?

    Toutes vos remarques sont les bienvenues.

    patdef
    viaperlata

    PS : Je profite de ce message pour vous remercier pour le travail que vous avez réalisé sur spip et thelia.

    • Salut Patdef,

      pour que le plugin commentaire fonctionne, il faut changer ligne 102 dans commentaires/Commentaires.class.php :

      if(isset($_POST['action']) && $_POST['action'] == "ajcommentaire"){

      par

      if(isset($_POST['thelia_action']) && $_POST['thelia_action'] == "ajcommentaire"){

      je l’ai mis sur le site de test : http://plugin-thelia.openstudio.fr/spip.php?page=produit&ref=def0008

      j’ai ajouté le code suivant dans le squelette :

      <h2>commentaires sur ce produit</h2>
      <T_comment>
      <ul>
      <THELIA_comment type="COMMENTAIRES" ref="THELIA-PRODUIT_REF">                                                      
      	<li>Message de THELIA-NOM : THELIA-MESSAGE <br />
      	THELIA-HEURE THELIA-DATE </li>
      </THELIA_comment>
      </ul>
      </T_comment>
      <//T_comment>
      
      <br class="nettoyeur" />
      <form action="#URL_PAGE{produit,ref=THELIA-REF}" method="post">
         <input type="hidden" name="thelia_action" value="ajcommentaire" />
         <input type="hidden" name="commentaire_ref" value="THELIA-REF" />
         Nom : <input type="text" name="commentaire_nom" /><br />
         Message : <input type="text" name="commentaire_message" /><br />
         <input type="submit" value="OK" />
      </form>

      tiens moi au courant,

      a+

    • Bonjour Arnault,

      Effectivement, il suffit de modifier action en thelia_action dans la fonction action() pour que le plugin retrouve ses fonctionnalités d’insertion dans la base.

      J’aurais du y penser !

      Merci de m’avoir indiquer la méthode à suivre. Je vais pouvoir continuer ma démarche de développement d’un nouveau plugin.

    Répondre à ce message

  • 3
    Olivier

    Dis-moi, avant de me lancer, que me conseilles-tu de faire pour un menu déroulant vertical comme sur ton site « menu-fretin » ? Et peut-on en faire un horizontal sur le même principe ?

    Merci pour ton aide.

    • Salut,

      L’effet déroulant est obtenu avec jQuery. Je n’ai pas eu le temps d’en faire un plugin jQuery facile à installer, pour l’instant c’est une solution « sur mesure ». Regarde aussi sur mon site, sur la page d’accueil j’en ai mis un pour les dernières réalisations.

      Le principe est simple, un div « container » de position fixe, dans lequel on déplace les éléments vers la gauche ou vers la droite (si par exemple ils ont une position absolue et qu’on fait varier leur attribut ’left’) .

      Avec « overflow : hidden », sur le « container », ce qui dépasse ne se voit pas.

      après, regarde le code source pour voir plus précisément.

      Si tu veux qu’on développe ensemble un plugin jQuery puis ensuite un plugin pour spip (qui remplirait le menu horizontal avec des articles taggés d’un mot clefs particulier, ou des brèves) contacte moi, ça serait plus simple à intégrer, on pourrait imaginer insérer dans le squelette une simple balise spip dans les squelettes et le reste serait automatique...

      on pourrait faire un ’clone’ de l’anim en flash de http://hasselblad.fr/

      ++

    • olivier

      Bonjour,

      J’ai réussi très simplement en allant voir sur cette page (alsacreations).

      C’est un menu accordéon vertical vraiment beau et simple.

      Quand j’aurais le temps, je le testerais à l’horizontal.

      Pour ce qui est de créer un plugin, ça serait une bonne idée si j’étais développeur mais je n’ai point ce talent. Désolé.

      PS. Tu n’as toujours pas testé le plugin commentaires ? Je bloque toujours la-dessus.

      Merci

    • Salut Olivier,

      j’ai enfin eu le temps de me pencher sur les commentaires dans thélia. j’ai fais une réponse à Patdef : http://www.spip-contrib.net/Plugin-Thelia#forum407002

      il faut changer ligne 102 dans Commentaires.class.php les action par des thelia_action

      ++

    Répondre à ce message

  • Bonjour

    Alors je débute et je cherche toujours comment faire pour intégrer de façon plus jolie (dans une rurique par exemple) les formulaires de connexion (mon compte, mot de passe, etc) plutôt que sur la page d’accueil. J’utilise Thelia et BeeSpip, donc j’ai bien copié les squelettes correspondant dans /squelttes et je ne comprends plus comment avancer. Ya t’il un mot clé à faire apparaitre dans une rubrique, pour qu’elle soit interprétée par le bon squelette ?
    Merci !

    Répondre à ce message

  • 1
    olivier

    Bonjour,

    J’ai besoin de cacher un produit sur thélia, exactement comme l’on peut le faire sur spip avec : id_article !=1.

    Est-ce prévu ?

    Merci

    Répondre à ce message

  • 9
    Marc VALLETEAU de MOULLIAC

    Bonjour, j’ai installé les éléments comme indiqué, et j’avoue que je suis impressionné par le travail effectué : pas un souci, et ça marche !!

    J’ai complété le fichier .htaccess avec les lignes comme indiquées (en local pour le moment) et la fonctionnement est ok.

    Mais maintenant, je suis bloqué : comment faire pour mettre en place une interface personnalisée ? Avec spip, je fais comme suit : un rep /squelettes, mes squelettes de dans, ainsi que le css etc. C’est évidemment ce que j’ai fait, mais, une fois ma page sommaire.html dedans, je ne vois plus le menu de Thelia !! Spip me lit bien cette page, mais sans les menus ’standards’ de droite. Je ne trouve d’explcation nulle part sur ce phénomène.

    Enfin, il est écrit plus haut de modifier le mot-clé #THELIA ... et là, je ne comprends pas : il faut créer un groupe de mots-clés pour thelia afin que cela fonctionne avec Spip ou quoi ?

    Y a-t-il un endroit où cela est expliqué, en dehors de la syntaxe des boucles, qui, elle, est simple à assimiler ...

    Merci, et encore bravo pour ce plugin qui nous redonne de la liberté !!

    Marc

    • Marc VALLETEAU de MOULLIAC

      Bon, je me réponds à moi-même pour ce qui est du redesign : ça marche bien dans le dossier squelettes !! En fait, j’avais testé avant de modifier le fichier .htaccess, alors, ça ne pouvait pas marcher !! Ouf, de ce côté-là, c’est ok, et encore bravo pour cette association !! Je suis aux anges !!

      Mais, du côté du mot-clé THELIA, je suis toujours sec ... Juste une petite piste ??

      Je continue néanmoins à chercher ...

      Marc

    • Salut,

      il ne s’agit pas d’un mot clef au sens de SPIP, mais d’une syntaxe particulière à utiliser dans l’écriture des boucles Thélia. Il faut tout simplement préfixer les balises de Thélia par le mot THELIA- pour éviter une confusion avec les balises SPIP.

      par exemple une balise thélia #URL doit être appelée THELIA-URL

      ++

    • Bonjour,

      Je me raccroche à ce fil de discussion car moi aussi je ne comprends pas trop cette histoire de modification de balise.
      Dans quels fichiers de spip faut-il faire ces adaptations ?
      Au fait j’ai déja installé spip, puis le pluggin EGT et ensuite Thelia.
      Je retrouve bien le plugin thelia dans l’espace privé et ça semble fonctionner.
      Maintenant je ne sais pas comment créer une rubrique magasin de mon site et indiquer qu’un article peut être acheter avec toute les fonctionnalités de thelia.

      Merci

    • Marc VALLETEAU de MOULLIAC

      Oui, merci Arnaud, effectivement, j’ai regardé de près ton code dans les pages de Thelia du plugin, et la lumière est venue progressivement !!

      D’ailleurs, une question en passant : est-il possible que je mette des pages dans le dossier squelettes avec du code de Thelia dedans, ou dois-je obligatoirement mettre les pages avec les boucles Thelia dans le plugin ?

      Merci de tes conseils. Marc

    • Salut Marc,

      oui, il vaut mieux travailler dans /squelettes. Ainsi la maintenance du site sera facilitée.

      a+

    • [jicew] : Comme tu utilises également le plugin EGT, tu ne vois pas les squelettes fournis avec le plugin Thélia, car ceux d’EGT les surchargent. Il faut donc que tu surcharges dans /squelettes avec des squelettes personnalisés pour la vente en ligne dans lesquels tu auras ajouté des boucles THELIA en fonction de tes besoins :
      -  pour lister les rubriques de produits,
      -  pour afficher le panier
      -  pour accéder au compte client
      -  ...etc...

      inspire-toi des squelettes fournis avec le plugin, par exemple inc-rubriques.html

      ++

    • Marc VALLETEAU de MOULLIAC

      Merci Arnaud, mais il y a cependant un truc que je ne comprends pas : lorsque je prends (par ex.) le fichier inc-rubriques.html qui est dans le rep /plugin-thelia et que je le mets dans mon répertoire /squelettes (les deux répertoires sont à la racine du site), les boucles Thelia ne sont plus interprétées. Evidemment, en le remettant à sa place, tout rentre dans l’ordre ...

      Or, tous mes développements spip, sans exception, sont dans squelettes (ou tout autre rep qui en fait office), c’est important que je puisse donc en faire de même avec thelia (si c’est possible, évidemment !) ...

      Y a-t-il un truc à régler dans Thelia pour que les fichiers de squelettes soient pris en compte ?

      Marc

    • Si la page est recalculée, c’est le fichier dans squelettes qui est pris en compte, ceci est indépendant du plugin Thélia. As-tu un lien pour qu’on regarde ?

    • Marc VALLETEAU de MOULLIAC

      Oui, je sais, j’ai bien évidemment vidé le cache et recalculé la page, mais ça reste sans changement ... J’ai bien, à la racine du site : les fichiers de spip, ceux de thelia, un rep plugins avec, entre autres, plugin-thelia dedans, un rep squelettes destiné à recevoir les squelettes ...

      Je n’ai pas encore mis le site en ligne, mais tu peux le voir ici : http://81.64.217.35:888/generationvin

      Cependant, il faudrait que je sois là quand tu regarderas, car j’ai remis les choses dans l’ordre initial. On pourrait essayer ensemble, qu’en penses-tu ? Sans vouloir te prendre trop de temps (06 61 79 17 31).

      A plus tard. Marc

    Répondre à ce message

  • 7

    Bonjour !

    J’ai un souci avec votre plugin.

    Tout se passe bien si ce n’est que je n’arrive pas à remplir mon panier !

    Quand j’appuye sur le bouton du panier (pour mettre mon élément dedans), voici la page qu’il charge : http://www.monsite.be/spip.php?page=panier&lang=fr

    Du coup mon panier reste vide.

    J’ai pourtant suivi toutes les étapes de l’installation.

    Auriez vous une idée ?

    Merci de tout coeur,

    Cédric

    • Je me rends compte que j’ai aussi une page blanche quand je clique sur la photo de mon produit :

      SITE ICI.

      Quelqu’un accepterait-il de jeter une oeil et de me dire ou ca coince ?

    • Salut,

      vérifie bien qu’il y a la présence des deux champs :

      	<input type="hidden" name="thelia_action" value="ajouter" />
              <input type="hidden" name="ref" value="THELIA-REF" />

      dans le formulaire d’ajout au panier, c’est en variable cachée que sont envoyées, l’action à réaliser et la référence du produit à ajouter.

      regarde dans le squelette produit.html livré avec le plugin.

      Si tu es bloqué, tu peux m’envoyer un lien vers ton site (en message privé si tu préfères) pour que je regarde.

      a+

    • ok j’avais pas vu le lien vers le site.

      peux-tu essayer de créer un produit avec un référence plus simple et sans accent ?

      merci

    • Ces deux champs sont bien présents dans la page produit.html et dans la page rubrique.html (dans le formulaire).

      Hélas, rien n’y fait.

      Merci si tu as le temps de regarder deux secondes : LIEN VERS LA PAGE EN QUESTION

      (Je précise que je n’ai pas modifié les fichiers du plugin ni de thelia).

      Merci de tout coeur à toi pour ta réactivité !

    • Je vais réinstaller le tout !

      Il y a deux zip plugin-thelia, dont une en développement, lequel choisir, sachant que j’ai installé Thélia 1.3.5 ? Merci

    • tu peux installer le dernier (plugin-thelia-dev), il contient justement une mise à jour sur les accents dans les variables GET et POST

      Tu as essayé sans accent sur la référence du produit ? ça n’a pas marché ?

    • Merci !

      Effectivement, c’était certainement lié aux accents dans la référence du produit !

      Bon à savoir !

    Répondre à ce message

  • 4

    Bonjour,

    Un grand merci pour ce plugin, mélanger SPIP et Thelia dans les même squelettes c’est réellement époustouflant !!!
    En plus SPIP apporte des points forts qui manquent encore à Thelia (inclure de squelettes de plusieurs niveaux, <:multilingue:>, ...)

    J’ai quand même un soucis, que je vois mal comment régler (je vais chercher, mais si quelqu’un l’a déjà résolu ...) :

    Mon site SPIP est en UTF-8 ... mais Thelia en ISO-8859-1

    En fait, ça se passe très bien car SPIP transforme à la volée (je crois avoir lu ça depuis ch’ais plus quelle version). Donc, ce qui viens de Thelia pour l’afficher correctement dans SPIP ! (textes produit = ok par exemple)

    Seulement voilà, y a des formulaires de Thelia affichés via SPIP (=ok), mais qui renvoient du texte à Thelia en UTF-8 (=prblm) :
    -  formulaire d’inscription ;
    -  formulaire pour les adresses ;
    -  etc ...

    je cherche une solution, pour contrer cela, ne serait-ce qu’une piste :
    -  modifier dans Thelia ?
    -  modifier dans le plugin SPIP ?

    merci d’avance,
    sinon je reviendrais poster mes trouvailles

    • J’ai trouvé une solution pour ce problème d’encodage différents entre SPIP (utf-8) et Thelia (iso-8859-1) :

      1. Modifiez le fichier (moteur de Thelia)

      fonctions/moteur.php

      2. Rendez-vous vers la ligne 103

      où se trouve le commentaire :

      <?php
      // initialisation des variables du couple php/html
      ?>

      Cette partie (suivant le commentaire) concerne la récupération des variables renvoyées par les formulaires, liens, cookies depuis le front-office (coté visiteur = géré par SPIP en utf-8), vers les fichiers de traitement de Thelia (enregistrement en base ou autres, mais en -8859-1).

      3. Utiliser les fonctions (php) de SPIP pour convertir l’encodage

      Qui sont d’ailleurs utilisées par ce plugin pour afficher correctement le texte provenant des produits Thelia dans les pages SPIP (via la fonction de traitement du squelette).

      Il suffira donc de changer chacune des lignes qui traitent la récupération de ces variables (par exemple ici avec « prenom ») :

      <?php
      if(!isset($_REQUEST['prenom'])) $prenom=""; else $prenom=$_REQUEST['prenom'];
      ?>

      en ajoutant les fonctions SPIP pour transformer les caractères :

      <?php
      if(!isset($_REQUEST['prenom'])) $prenom=""; else $prenom=unicode2charset(charset2unicode($_REQUEST['prenom'], 'utf-8'),'iso-8859-1');
      ?>

      Il y a sûrement une façon plus élégante de traiter cela. Mais cela fonctionne très bien. Ne semble pas générer de conflit avec le backoffice de Thelia.

      Mais je suis sur que les développeur de ce plugin (spip) trouveront comment traiter cela dans le plugin, sans modifier Thelia. J’ai essayé mais je connais pas assez bien le développement des plugins SPIP.

    • Salut Sylvain,

      merci pour ces infos. Si j’ai bien compris, il faudrait convertir à la volée les variables post en ISO dans le plugin thélia avant de les envoyer à Thélia.

      Ca devrait être possible dans le plugin sans avoir à modifier thélia, je vais regarder et faire des essais.

      Merci pour tes commentaires également, c’est vrai que melanger des boucles Thélia et SPIP dans un même squelette, c’est assez magique !

      ++

    • Hello,

      Si j’ai bien compris, il faudrait convertir à la volée les variables post en ISO dans le plugin thélia avant de les envoyer à Thélia.

      plus que les POST c’est carrément :

      <?php $_REQUEST['variable'] ?>

      (POST, GET, COOKIE)

      mais oui, c’est surtout les POST des formulaires ...

      en tout cas ça fonctionne, et en production : ISBL Consultants > Dossiers THEMA

      merci :-)

    • Salut Sylvain,

      Félicitation pour ton site, très abouti, je l’ai mis dans la liste des réalisations. D’ailleurs si d’autres ont des sites qui tournent avec le plugin, qu’ils n’hésitent pas à m’envoyer un lien.

      je viens de commiter une modif pour la converstion automatique, comme tu le suggérait, en iso de toutes les variables $_REQUEST

      (récupérer le zip nommé plugin-thelia-dev.zip)

      tiens moi au courant,

      a++

      ps : si tu veux participer au développement du plugin, tu es le bienvenu.

    Répondre à ce message

  • 2
    olivier

    Bonjour, j’ai installé le plugin commentaire de Thélia et je n’arrive pas à le faire fonctionner.

    J’ai placé le code suivant dans la page produit.html et ca ne fonctionne pas, aucun commentaire ne s’affiche après validation en dessous du produit ni dans la partie privée.

    Avez-vous une idée ?

    Merci

    				<form action="produit.php" method="post">
    	<input type="hidden" name="action" value="ajcommentaire" />
    	<input type="hidden" name="commentaire_ref" value="THELIA-PRODUIT_REF" />
    	<input type="hidden" name="ref" value="THELIA-PRODUIT_REF" />
    	Nom : <input type="text" name="commentaire_nom" /><br />
    	Message : <input type="text" name="commentaire_message" /><br />
    	<input type="submit" value="OK" />
    </form>
    				
    				
    				
    				<THELIA_comment type="COMMENTAIRES" ref="THELIA-PRODUIT_REF">                                                      
    Message de THELIA-NOM : THELIA-MESSAGE <br />
    THELIA-HEURE THELIA-DATE 
    </THELIA_comment>
    • Salut,

      je n’ai pas installé ce plugin, il faudrait que je fasse des essais de mon côté aussi pour te dire.

      mais tu devrais essayer en remplaçant les premières lignes de la boucle pour les mettre au format du plugin thélia :

       <form action="produit.php" method="post">
              <input type="hidden" name="action" value="ajcommentaire" />

      à remplacer par :

       <form action="#URL_PAGE{produit}" method="post">
              <input type="hidden" name="thelia_action" value="ajcommentaire" />

      est-ce que les commentaires sont biens enregistrés en base ? peut-être le ref du produit associé est incorrect ?

      ++

    • olivier

      Bonjour,
      J’ai remplacé les premières lignes mais ca ne change rien, j’ai vérifié, la table commentaires est bien dans la base mais aucun enregistrement n’apparaît.

      Lorsque j’écris un commentaire et que je valide, la seule différence c’est qu’il perd le fil d’ariane (au lieu de « accueil > rubrique > produit » il met accueil > > produit).

      Une idée ?

      Merci

    Répondre à ce message

  • 5

    Bonjour,

    Je tombe sur un os :
    Mon but est d’afficher le contenu du panier sur toutes les pages (catalogue, fiche produit, accueil,...).

    Je met donc en place la (très) simple boucle suivante, histoire de voir ...

    THELIA-REF

    Stupéfaction !! Le contenu du panier ne s’affiche que sur la page d’accueil et refuse de s’afficher sur les pages du catalogue ainsi que sur les fiches produits !

    Comment résoudre ce soucis ??

    • Arf ma boucle a été mal prise en compte, j’en suis désolé. Il s’agissait de la boucle suivante :

      « THELIA_PANIER type="PANIER" »

      THELIA-REF

      « /THELIA_PANIER »

    • c’est bizarre. un pb de recalcul ?

      si tu as un lien vers ton site, je peux regarder pour mieux comprendre ce qui se passe...

      ++

    • merci de ta proposition d’aide

      J’ai trouvé d’où le problème venait : j’avais un "session_start()" dans les 2 fichiers fautifs ! En enlevant l’ouverture de session, ça roule !

      Par contre maintenant j’ai un autre soucis : En validant le formulaire de création de compte (page connexion.php) j’ai un message d’erreur de spip :

      “Erreur...

      Fichier action/creercompte introuvable

      Je tourne en rond...

    • Tu ne devrais plus avoir normalement de connexion.php vu que toutes les pages de thélia ont été mises sous la forme de squelettes spip, dans le cas de la page de connexion tu devrais avoir connexion.html, appelée par spip.php?page=connexion

      par rapport à l’erreur « Fichier action/creercompte introuvable » en général c’est lié à un input caché dans le formulaire qu’il faut renommer en « thelia_action » au lieu de « action » pour pas que spip l’interprète comme une action spip.

      normalement avec le fichier creercompte.html fourni avec le plugin, c’est déjà modifié :

      <form action="#URL_PAGE{nouveau,lang=#LANG}" method="post" name="nouveau" id="nouveau">
      			<input type="hidden" name="thelia_action" value="creercompte" />
      
      			<table>
      
      				<tr>
          				<td class="ligneTableau"><:spipthelia:civilite:>*</td>
      				    <td class="ligneTableau">
      					... etc...

      si tu es bloqué, n’hésites pas à m’envoyer un lien si tu veux que je regarde (en privé si tu veux)

      a+

    • OK, nikel !
      En effet, c’est les input name=« action » qui faisaient foirer !

      Merci beaucoup en tout cas pour ta réponse rapide et pertinente !

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom