Utilisation avancée du plugin Thélia

Associer des produits aux articles, url-rewriting et multilinguisme

Le plugin Thélia permet l’utilisation conjointe de SPIP et Thélia pour des sites mixtes : de publication et de vente en ligne.

Associer un produit thélia à un article

Il y a désormais [1] une interface dans l’espace privé pour pouvoir associer un/des produits à une rubrique ou un article. Cette interface s’active dans le panneau de configuration cfg du plugin.

Dans les squelettes, on peut utiliser 4 nouvelles boucles :
-  PRODUITS_ARTICLES : produits Thélia associés aux articles SPIP
-  RUBRIQUESTHELIA_ARTICLES : rubriques Thélia associées aux articles SPIP
-  PRODUITS_RUBRIQUES : produits Thélia associés à des rubriques SPIP
-  RUBRIQUESTHELIA_RUBRIQUES : rubriques Thélia associées à des rubriques SPIP

exemple pour afficher les produits associés à une rubrique :

<BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
   #TITRE
   #TEXTE..etc

   <B_produitsassocies>
       produits associés : 
       <ul>
       <BOUCLE_produitsassocies(PRODUITS_RUBRIQUES){id_rubrique}>
              [ <THELIA_produit#ID_PRODUIT type="PRODUIT" id="(#ID_PRODUIT)">
                <li> <a href="#URL_PAGE{produit,ref=THELIA-REF}">THELIA-TITRE</a> </li>
               </THELIA_produit#ID_PRODUIT>]
       </BOUCLE_produitsassocies>
       </ul>
   </B_produitsassocies>
       pas de produit associé
   <//B_produitsassocies>

</BOUCLE_rubrique>

Associer un article et un produit peut-être utile si par exemple vous avez des fiches de produits sur le site sous forme d’articles SPIP (ce qui permet de bénéficier des atouts de SPIP pour l’édition du contenu, les images, les forums...), et que vous souhaitiez insérer un lien automatique vers l’ajout au panier pour certaines d’entre elles.

C’est un système souple qui peut être utilisé pour d’autres fonctions, par exemple associer une rubrique SPIP à une rubrique dans Thélia. Ainsi lorsque la rubrique SPIP est affichée, on peut proposer dans un encart les produits de la rubrique Thélia associée...

Url rewriting

Pour utiliser la réecriture d’adresse coté Thélia, il faut ajouter dans le .htaccess le code suivant (à l’endroit où se trouvent les rewriterules) :

#RUBRIQUE ############## 
RewriteRule ^([a-z0-9-]*)_([0-9]*)_([a-z0-9-]*)_([a-z0-9-]*)_\.html spip.php?page=rubrique_thelia&id_rubrique=$2 [NC,QSA,L] 
RewriteRule ^([a-z0-9-]*)_([0-9]*)_([a-z0-9-]*)_\.html spip.php?page=rubrique_thelia&id_rubrique=$2 [NC,QSA,L] 
RewriteRule ^([a-z0-9-]*)_([0-9]*)_\.html spip.php?page=rubrique_thelia&id_rubrique=$2 [NC,QSA,L] 

#PRODUIT ############# 
RewriteRule ^([a-z0-9-]*)_([0-9]*)_([a-z0-9-]*)_([a-z0-9-]*)__([^.]*)\.html spip.php?page=produit&ref=$5&id_rubrique=$2 [NC,QSA,L] 
RewriteRule ^([a-z0-9-]*)_([0-9]*)_([a-z0-9-]*)__([^.]*)\.html spip.php?page=produit&ref=$4&id_rubrique=$2 [NC,QSA,L] 
RewriteRule ^([a-z0-9-]*)_([0-9]*)__([^.]*)\.html spip.php?page=produit&ref=$3&id_rubrique=$2 [NC,QSA,L] 
#FIN THELIA

Ensuite, dans les squelettes (inc-rubriques.html, rubrique_thelia.html, produit.html..etc..) remplacer les URL spip vers des rubriques ou des produits par la balise THELIA-REWRITEURL.

par exemple, dans rubrique_thelia.html ligne 48 et 54 :
#URL_PAGE{produit,ref=THELIA-REF&id_rubrique=THELIA-RUBRIQUE_ID}

devient :
THELIA-REWRITEURL

Régler les conflits sur la classe smtp

On rencontre parfois un conflit sur la class Smtp, utilisée par Thélia, mais aussi par certains plugins SPIP, dont « envoyer à un ami » et « spip-lettres ».

Vous pouvez mettre en commentaire dans fonctions/moteur.php la ligne 58, qui contient l’appel à Smtp.class.php :

//include_once("classes/Smtp.class.php");

Multilinguisme

SPIP et Thélia utilisent tous les deux la variable lang dans l’url, mais les valeurs attendues ne sont pas les mêmes. Dans SPIP, lang prend pour valeur deux caractères, alors que dans thélia, lang prend pour valeur un nombre.

Par défaut, il n’y a que trois langues dans Thélia, les autres langues se rajoutent manuellement au besoin dans la table lang.
-  le français : 1
-  l’anglais : 2
-  l’espagnol : 3

Il est donc important de faire une correspondance entre le nommage de SPIP et le nommage de Thélia. Le plugin est paramétré correctement pour les 3 langues par défaut de Thélia, mais si vous êtes amenés à en ajouter d’autres, il est alors nécessaire de personnaliser les correspondances.

-  dans ce cas, modifiez le fichier spip_thelia_fonc.php, ligne 94 :

switch($_REQUEST['lang']) {
		case 'fr' : $_REQUEST['lang'] = 1; break;
		case 'en' : $_REQUEST['lang'] = 2; break;
		case 'es' : $_REQUEST['lang'] = 3; break;
		default: $_REQUEST['lang'] = 1; break;
	}

Utiliser le plugin commentaires de Thélia

Il existe un plugin dans Thélia qui permet d’ajouter des commentaires sur les produits http://contrib.thelia.fr/spip.php?a....

Si vous souhaitez l’utiliser sur votre site spip-thélia, il faut modifier le fichier Commentaires.class.php (ligne 102) et remplacer :

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

par

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

Voici un exemple d’intégration dans le squelette produit.html

<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>

Vendre des produits virtuels

Si vous utilisez le plugin produits virtuels de Thélia http://contrib.thelia.fr/spip.php?a..., remplacez dans Prodvirtuel.class.php ligne 244 : action=prodvirtueldl par
thelia_action=prodvirtueldl

Notes

[1à partir de la version 1.2 du plugin

Discussion

39 discussions

  • 3

    SPIP Mutualisé + THELIA

    Bonjour

    J’utilise le plugin spip-thelia sur un de mes sites.
    J’ai plusieurs sites et je voudrais mutualiser.

    Est-il possible d’utiliser THELIA dans un SPIP mutualisé ?

    • Je me réponds...

      OUI c’est possible. Il faut glisser les répertoires THELIA (admin_xxx, fonctions, clients, etc.) à la racine de spip mutualisé, au même niveau que ecrire, squelette, etc.

      Ou alors, créer des liens symboliques dans le répertoire spip pointant vers ces répertoires.

      Ca marche mais avec une seule boutique.

      Si on a plusieurs THELIA, on va avoir le problème du partage du répertoire « client ».
      A mon avis, il faut passer par une modif du plugin mutualisation qui ferait une redirection vers le répertoire \spip\sites\lesite\client

      Pour l’admin_xxx, AMHA pas de problèmes car il peut y avoir autant de répertoire admin_xxx que de boutique.

      Si qqun a déjà fait la manip, je suis preneur.

    • Bonjour

      Le sujet est toujours à l’ordre du jour : comment mutualiser à la fois SPIP et THELIA ?

      Je ne suis même pas sûr qu’il existe une solution de mutualisation pour THELIA seule ?

      Enfin, c’est juste un petit UP au cas où quelqu’un aurait trouvé une solution depuis mon dernier message il y a 1 an et demi.

    • Salut Bruno,

      il y a désormais une méthode décrite ici :
      http://contrib.spip.net/Mutualisation-SPIP-THELIA?lang=fr

    Répondre à ce message

  • 2

    Changement du format url dans THELIA 1.5

    J’ai migré sous THELIA 1.5.1 et je constate que les urls ont changé de format.
    Du coup, l’url rewriting ne fonctionne plus => erreur 404

    Il y a bien la solution de changer l’url à l’ancien format, directement dans la fiche produit
    mais je préférais une compatibilité dans l’ancien et le nouveau format.

    Que faut-il modifier dans le .htaccess ?

    • J’ai l’impression que THELIA 1.5 possède désormais son propre système de gestion d’url et qu’il n’est pas compatible avec SPIP ?

      J’ai essayé d’ajouter une ligne dans le .htaccess mais on ne sait plus faire la distinction entre une url de rubrique et une url de produit, elles ont le même format.
      Il faut accéder à la table reecriture dans la base thelia pour connaitre le n° de rubrique et le id produit.
      Je pense que cela n’est pas compatible avec la gestion d’url de spip ?

      Quelqu’un peut-il me confirmer ?

    • Alesk\o_

      Bonujour,
      vous avez trouvez une solution ??? de mon coté rien y fait.

    Répondre à ce message

  • 8

    Bonjour !

    J’ai fouillé le forum, mais je n’ai pas trouvé de réponse à mon souci.
    Désolé pour le dérangement si je suis passé à côté.

    Je souhaite associer une rubrique SPIP à une rubrique Thélia. J’ai configuré le plugin en conséquence. Le souci se manifeste à l’affichage de la rubrique SPIP dans l’administration SPIP :
    -  quand ma rubrique SPIP ne contient que des articles, tout va bien, l’interface est conforme ;
    -  quand ma rubrique SPIP contient au moins une sous-rubrique SPIP, j’ai un cadre qui masque une grande partie des informations de l’interface (cf. pj). Il semble que ce soit le cadre de la première sous-rubrique SPIP qui s’étale.

    Ma configuration :
    -  XAMPP 5.2 / Win XP
    -  SPIP 2.0.10
    -  Thelia 1.4.2.1

    Merci d’avance et bonne année à tous !
    Julien C

    • Bonjour,

      j’ai le même problème. Existe-t-il une solution pour rectifier l’affichage des rubriques ?

    • Bonjour,

      Pour ma part, je n’ai pas eu le temps de fouiller plus en profondeur le problème pour le corriger, mais j’ai trouvé une solution court terme.

      Comme mon client n’avait pas besoin de modifier ces associations de rubriques, j’ai simplement :
      -  activé la fonctionnalité d’association rubrique<->rubrique du plugin ;
      -  réalisé les associations ;
      -  désactivé la fonctionnalité d’association rubrique<->rubrique du plugin.

      Ainsi, l’interface retrouve son aspect normal, et comme les associations restent écrites en base et que les boucles ne sont pas désactivées (seul l’affichage permettant de réaliser les associations disparait du back-office), j’ai pu ensuite réaliser normalement les traitements attendus dans les squelettes.

      Je reste preneur d’une solution :)

      Cordialement,
      Julien

    • Le problème c’est qu’avec ce bug nous n’avons plus accès à la modification des rubriques et donc des associations spip et thelia dès que nous les activons.

      Il n’est plus possible de modifier les rubriques spip ni leurs contenus.

    • Petite précision supplémentaire concernant le bug :
      ceci ne se passe que pour les rubriques à la racine du site et leurs sous-rubriques.
      Les sous sous-rubriques ne sont pas concernées par ce bug et il est possible de les affiliées à des rubriques Thelia !

    • il me semble que ce bug est lié à google map avec Plugin Gis escoitar ...

      fabien

    • Alexandre

      Rien à voir, j’ai eu le problème sans avoir installé le plugin gis.
      Je l’ai eu sur une 2.1.8 avec cfg , couteau-suisse , spip_bonux et biensûr thelia_spip d’installé.

    • Renée Picard

      paniersdici.com a aussi ce problème et c’est bien tannant !

    • Chez moi, la désactivation de SEO résout le problème

    Répondre à ce message

  • 4

    installation Thelia 1-4.3.1 sous SPIP 2.18
    bonjour à tous,
    j’ai un site sous spip 2.18 qui fonctionne. Après avoir essayé d’installer THELIA 1.4.3.1 j’obtiens ce message d’erreur :

    Notice : Undefined offset : 14 in /mnt/132/sdd/e/c/cuirdeluxe/ecrire/auth/sha256.inc.php on line 207

    Notice : Undefined index : message_ok in /mnt/132/sdd/e/c/cuirdeluxe/plugins/plugin-thelia/formulaires/login.php on line 230

    Notice : Undefined index : vars in /mnt/132/sdd/e/c/cuirdeluxe/ecrire/public/composer.php(49) : eval()’d code on line 83

    Notice : Undefined index : filtre_compacte_head in /mnt/132/sdd/e/c/cuirdeluxe/ecrire/inc/filtres.php on line 43

    Notice : Undefined index : filtre_compacte_head_dist in /mnt/132/sdd/e/c/cuirdeluxe/ecrire/inc/filtres.php on line 43

    Notice : Undefined index : compacte_head in /mnt/132/sdd/e/c/cuirdeluxe/ecrire/inc/filtres.php on line 43

    quelqu’un a t il déjà rencontré ce problème ?

    bonne journée

    • Bonjour Eric,

      As-tu solutionné ton problème ? J’ai la même erreur.

    • bonsoir Stef,
      je n’ai toujours pas solutionné mon problème. J’ai adopté JOOMLA. Ca permet de faire les mêmes choses que SPIP (même en y rajoutant des modules pour faire de l’E-commerce) sauf qu’il n’y a aucun bug ni fichier à modifier manuellement.
      C’est un vrai plaisir, je te le conseille vivement

      désolé pour les Spipmans

    • Arnault

      Désactivez l affichage des notices php dans votre php.ini

    • Ou plus simplement renommer le répertoire suivant :

      plugins/plugin-thelia/formulaires/

    Répondre à ce message

  • 1

    Les voyelles accentuées (et la lettre qui les accompagne immédiatement) saisies lors de la création du compte par le client ne sont pas prises en compte

    Bonjour,

    Ma boutique Spip-Thelia (qui tournait bien depuis un an) a un gros problème dont je viens de m’apercevoir, par une mise à jour que j’ai faite il y a un mois (Spip_2.0.10>2.1.10, Thelia_1.4.3.1>1.5.0 et Spip-Thelia_1.4>1.4.2) :

    Je pense qu’il s’agit d’une régression car le problème se pose aussi sur le site de démo de Spip-Thelia(Spip 2.1.12, Thelia 1.5.1 et Spip-Thelia 1.4.2) : http://plugin-thelia.openstudio.fr/

    De quoi s’agit-il ?

    Les voyelles accentuées saisies lors de la création d’un compte du processus de commande(1) ne sont pas pris en compte, AINSI que le caractère qui les suit immédiatement.

    Par exemple la personne qui saisira « Bérangère FÉRIÈRE 14 rue de la Baïsse 93800 ÉPINAY-SUR-SEINE » deviendra pour la boutique « Bange FIE 14 rue de la Base 93800 INAY-SUR-SEINE ».

    La correction de cette erreur par l’intéressé est impossible puisque la page "Modifier mes informations"(2) présente le même dysfonctionnement.

    À noter que la correction de l’adresse du client fonctionne à partir du backoffice de Thelia (ce qui laisse à penser que le soucis vient du plugin Spip-Thelia), mais comme ce backoffice ne permet pas la modification d’adresses des commandes, le problème reste entier pour ces dernières.

    Qu’en pensez-vous ?
    Une solution ?

    Merci d’avance pour vos idées et bonne journée à toutes et à tous

    Marc

    (1) ex : à la page http://plugin-thelia.openstudio.fr/spip.php?page=connexion
    (2) http://plugin-thelia.openstudio.fr/spip.php?page=compte_modifier

    • Je vous propose de répondre sur la page http://www.spip-contrib.net/Thelia où j’ai posté après coup le même message, car cette dernière semble davantage lue.
      Toutes mes excuses au gentil webmestre pour la suppression nécessaire du message ci-dessus :)
      Bonne journée
      Marc

    Répondre à ce message

  • Problème affichage association Espace privé :

    J’utilise SPIP et THELIA depuis un an, et ça fonctionne.

    Aujourd’hui, j’ai activé la fonction d’association des produits aux articles.
    J’ai bien un menu supplémentaire « PRODUITS ASSOCIÉS À L’ARTICLE » dans la page d’édition des articles, mais ce menu n’affiche pas correctement les produits.
    J’ai :

    #TITRE
    #TITRE [+]

    Comment régler ce problème ? MERCI

    Répondre à ce message

  • Alain BOURDEAU

    Bonjour,
    Avec le plugin thelia 1.4 [40278] qui marchait bien pour les liens de téléchargement pour les abonnements de fichiers .pdf, ne marche plus depuis une mise à jour indispensable du plugin cfg 1.16 [45207] ?

    En sélectionnant le lien envoyé on arrive sur la page d’accueil du site et le téléchargement ne se fait plus ? (même pour des anciens liens qui avaient très bien marchés.

    Merci pour votre aide.

    Répondre à ce message

  • nicofrand

    Lorsque dans ma boutique je clique sur « Voir la rubrique en ligne », je suis dirigé vers « rubrique.php ?id_rubrique=x » alors qu’il faudrait au moins « spip.php ?page=rubrique_thelia&id_rubrique_thelia=x ».

    Pour mon cas je vais utiliser htaccess pour transformer « rubrique.php ?id_rubrique=x » en « spip.php ?page=rubrique_thelia&id_rubrique_thelia=x » mais de manière générale si on a choisi la méthode « standard » de spip pour l’url_rewriting, ça posera problème...

    Répondre à ce message

  • 2

    Bonjour,

    un petit souci de langue. Je réussi à internationaliser tout dans mon site Thelia sous spip SAUF le TITRE, le CHAPO et la DESCRIPTION des articles à vendre. Je passe pourant la variable de langue qui a de l’effet pour tout le reste de la page.

    Une idée ?

    • Arnault

      C est le contenu de thelia qui n est pas traduit, quelques pistes :

      -  $forcer_lang=true ; dans mes options.php
      -  la traduction a été faite dans le backoffice de thelia ?
      -  la correspondance de langue entre thelia et spip est elle
      définie dans spip_thelia_fonc.php ?

    • Salut Arnault,

      Merci de ta réponse. Malheureusement la réponse est oui aux trois questions et j’ai toujours le même résultat.

    Répondre à ce message

  • 2

    Bonjour,
    J’essaye de faire fonctionner le plugin produits virtuels de Thélia avec le plugin Thélia de SPIP. J’ai remplacé dans Prodvirtuel.class.php ligne 244 : action=prodvirtueldl par thelia_action=prodvirtueldl comme vous le signalez dans votre billet. Le client reçoit bien le message avec le lien pour télécharger le document, sauf que le lien pointe sur la page d’accueil du site et non sur le document.
    J’ai regardé dans tous les sens mais je n’arrive pas à comprendre ce qui ne va pas.
    Auriez-vous une idée sur ce problème ?
    Bien cordialement

    • Bonjour,

      J’ai réussi à cibler la raison du dysfonctionnement, il suffit que j’enlève mon squelette sommaire.html du répertoire des squelettes pour que tout fonctionne. Bizarre, mais ça marche !

    • Bonjour,
      J’essaye de faire marcher ce plugin avec spip aussi.
      Je n’ai pas trouvé où il est dit qu’il faut changer la ligne 244 de Prodvirtuel.class.php.
      Il est vrai que ça fonctionne en faisant ces deux manips mais comment fais-tu avec spip avec un squelette sans sommaire.html ?

    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