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
Discussions par date d’activité
39 discussions
Bonjour,
Je test la fonction : identification unique spip - thélia mais ça ne ’marche pas’ !
1er faut-il s’identifier dans spip ou dans thélia ?
2em faut-il créer le nouveau ’client’ dans thélia ou dans spip ?
3em une fois identifié, dans quelle(s) variable(s) disponible(s) sur l’ensemble de la session peut-on récupérer l’identité -id- ou email du client en cours de session.
Merci bien.
Bonjour,
Début de réponses :
1er et 2em Tout est à faire dans thélia et cela crée un visiteur dans spip. La session dans spip n’est pas ’renseignée’ donc pas ’disponible’.
3em par exemple :
met à disposition la valeur de CLIENT_ID (thélia) dans la variable de session - pour_voir - par la balise :
#SESSION{pour_voir}
qui est disponible dans spip, pour ce ’client’ et sa session.Nouvelle question :
Quelle syntaxe pour inclure cette valeur dans une boucle du type :
Cette écriture de marche pas !!
Mais si je remplace
client = #SESSION{pour_voir}
par :client = 1234
, j’ai bien alors l’enregistrement des commandes de PRODABONNEMENT passées par le client_id 1234.merci pour une réponse. Alain
Suite de la question :
Dans la boucle THELIA SI CONNECTE, si je mets
#SESSION_SET{pour_voir, 1234}
j’ai en suite un fonctionnement convenable de la boucle ARTICLES. C’est donc un problème de chronologie de traitement qui ne fourni pas la bonne information à#SESSION_SET{}
.Que faire ? Merci
Bonjour,
Je fait évoluer ma demande : Serait-il possible de modifier le point d’entrée dans SPIP pour le plugin ? Actuellement
<nom>affichage_final</non>
.Si le point d’entrée est avant la fin de SPIP alors les variables produites par THELIA seraient disponibles pour SPIP.
Si oui quel point d’entrée ?
Merci bien
Répondre à ce message
URL rewriting : problème avec les accents
Les urls des rubriques ou produits contenant des accents dans le titre ne fonctionnent pas.
Les accents sont remplacés par un caractère bizarre (typique d’un problème de charset).
Et cela le fait que le codage utf-8 soit activé ou pas dans la config du plugin.
Pourtant, si je vais dans le BO THELIA, l’url indiquée est correcte, c.a.d que les accents sont bien supprimés.
Mais la balise THELIA-REWRITEURL semble ne pas supprimer les caractères accentués.
Je n’ai toujours pas résolu ce problème.
Je continue de penser qu’il s’agit d’un problème d’interprétation du charset des données en provenance de thelia par le plugin spip-thelia.
HELP
J’ai trouvé une solution. Un peu bourrin mais cela marche et en attendant mieux...
L’inconvénient de cette solution est qu’il faut modifier un source de THELIA.
Le problème vient du fait que la fonction qui rewrite les url n’est pas conçue pour du UTF-8.
- il faut convertir le fichier /fonctions/divers.php en UTF-8
Attention, cette opération vous fait péter tous les accents en les remplaçant par des caractères bizarre (un ? dans un losange). Il faut donc re-saisir tous les accents à la main.
Pour cela, j’ai ouvert ce fichier dans un autre éditeur avant conversion, puis j’ai fait du copier-coller.
ATTENTION, il y a plusieurs endroits dans le fichier. Regardez bien en comparant au fichier AVANT conversion.
- ensuite, dans ce même fichier, il faut modifier la fonction ereg_caracspec vers la ligne 325 :
Répondre à ce message
URL Rewriting
Je donne l’info pour y avoir passé un bon moment avant de trouver.
Le code htaccess mentionné plus haut est à placer avant le :
C’était écrit dans mon htaccess mais je ne l’avais pas vu immédiatement
De plus, dans le code htaccess mentionné plus haut, il faut remplacer « id_rubrique » par « id_rubrique_thelia ».
Ce qui devient :
Répondre à ce message
Bonjour, bravo pour tous les efforts déployés par la communauté des utilisateurs de SPIP en général, et aux développeurs du plugin Thelia en particulier !
J’ai une petit question concernant le formulaire d’inscription des nouveaux clients dans la base Thelia, les fichiers plugin-thelia/inc/inc-connexion.html et plugin-thelia/inc/inc-formulerr.html semblent communiquer de manière incomplète, ou alors ma configuration à des lacunes :
Le processus de vérification fonctionne, en ce sens qu’il renvoie bien vers la page d’erreur en cas de soumission incomplètes du formulaire, mais la page formulerr ne récupère pas les infos valides précédemment rentrées...! Quelqu’un voit-il d’où ça peut venir ?
Bonne journée à tous...
Je me répond à moi-même...
Le fichier /plugins/plugin-thelia/inc/inc-formulerr.html peut-être personnalisé pour afficher les valeurs de retour, ce qui n’est pas le cas par defaut... Du côté de la ligne 33, on peut donc ajouter value=« THELIA-NOM » à la balise INPUT du champs Nom. Si cette valeur existe et est correctement interprêtée, elle pré-remplira le champs concerné dans le formulaire d’erreur de saisie, allègeant d’autant la tâche de correction...
Sur ce principe, chaque champs INPUT obligatoire peut ainsi être potentiellement récupéré pour éviter d’avoir à retaper l’ensemble d’un formulaire parce qu’on a oublié de déclaré la son prénom !...
Répondre à ce message
Bonjour,
Je cherche à mettre en place l’identification unique, sans succès :
- SPIP 2.0.10 avec inscription ouverte aux rédacteurs, activation de l’identification unique via CFG, fonction chemin mise en commentaire
- Thélia 1.4.2.1
- Interface Thélia 1.4 (récupéré via SVN) avec les fichiers de pb_htaccess à la racine de SPIP
Ais-je oublié une étape ?
L’identification unique nécessite-t-elle une version supérieure de spip (bêta 2.1) ?
L’enregistrement des clients/auteurs s’effectuent t-elle simultanément dans les deux bases ?
Une solution de SSO (type CAS) serait-elle envisageable afin de mutualiser les auteurs/clients ?
D’autres pistes ?
Merci d’avance pour votre aide, vos idées...
Pierre-Jean
Pour complément, j’ai l’erreur suivante sur ma page de connexion :
spip.php ?page=connexion
Cette page Web présente une boucle de redirection.
The webpage at http://www.mondomaine.fr/spip.php?page=connexion has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer.
salut,
je viens de faire un correctif a ce sujet, le commit sera inclus dans le prochain zip du plugin (d’ici une heure ou 2)
dans /auth/thelia.php
juste avant :
rajouter :
pour le pb de redirection c’est un conflit entre le compte d’admin spip et thélia, tu peux vider les cookies de session pour remettre tout à zéro. je vais creuser la question
++ arnault
je précise que les clients doivent s’identifier avec son email comme identifiant
Merci beaucoup pour cette réponse, et pour le commit !
Je teste ces deux choses ce soir, et je fais un retour sur le forum.
Si je peux être utile à quelque chose, il ne faut pas hésiter. J’aimerais pouvoir aider à mon niveau notre petite communauté...
Encore merci, à très bientôt !
Pierre-Jean
Bonsoir à tous et merci à toute l’équipe
De mon coté lorsque j’active l’identification unique, j’ai un bug sur l’ensemble des pages de l’espace publique... La page home est redirigé vers /index.php ?page=adresse et firefox bloque avec le message cette page est redirigée.....
Y a t il une personne qui a rencontré ce problème ? si oui une idée de solution ?...
Pas si simple ce plugin mais je m’acharne....
Répondre à ce message
Bonjour concernant le rewriting d’URL de thelia dans spip comme dit ci-dessus.
Je n’ai pas de problème avec le fait de mettre le code dans le .htacces. Par contre
je ne comprends tout.
Faut-il réellement remplacer : #URL_PAGEproduit,ref=THELIA-REF&id_rubrique=THELIA-RUBRIQUE_ID par THELIA-REWRITEURL ?
J’ai fait le test sur le fichier dans rubrique_thelia.html mais ça ne fonctionne pas.
Est-ce exactement cette modif qu’il faut faire ?
Merci
Répondre à ce message
Avecproduit virtuel, et j’ai le même problème que Daniel (page 3).
J’ai bien modifier Prodvirtuel.class.php
Mon lien de téléchargement me renvoie toujours sur la page d’accueil du site.
Avez-vous trouvez une solution à ce problème ?
Merci
Répondre à ce message
Bonjour, je commence à utiliser avec un grand bonheur ce plugin avec un spip 208[13982], merci mille fois à ses auteurs ...
Dans ma découverte, une surprise, cependant : mes bases spip sont toujours encodées en utf-8, ce qui n’est pas le cas de Thelia. Alors, par exemple, dans la listes des pays qui s’affichent à la création d’un nouveau compte-client, tous les caractères accentués sont mal-fichus ... Comment résoudre ce problème ? A la vérification, en effet, tous les champs texte de la base Thelia sont en latin1_swedish_ci ...
Merci de me donner une astuce ...
Marc
Bonjour J’ai le même souci avec la liste déroulante des pays ;
As-tu résolu ton souci ?
merci
Oui, effectivement, j’avais envoyé ma solution sur la liste de spip ... et oublié de la mettre ici, désolé ... et, de plus, je dois dire que j’ai trouvé ce correctif grâce à un autre contributeur de spip, dont j’ai oublié le nom, qu’il m’en excuse, et en soit remercié grandement ...
Voici donc la solution, que j’ai appliquée et qui a tout remis dans l’ordre. Il faut aller dans plugins/plugin-thelia-dev/spip_thelia_fonct.php, et mettre en commentaires (mettre deux slash en début de chaque ligne) trois lignes que je mets ci-dessous :
ligne71
//$_REQUEST[$clef]=unicode2charset(charset2unicode($valeur, ’utf-8’),’iso-8859-1’) ;
ligne139
//$res = unicode2charset(charset2unicode($res, ’utf-8’),’iso-8859-1’) ;
ligne152
//$texte = unicode2charset(charset2unicode($texte, ’iso-8859-1’),’utf-8’) ;
Voilà ... Apparemment, ne sont en cause ni sql ni php ...
Bonsoir
J’ai aussi des problemes d’encodage de caractère, j’ai utilisé la solution proposé mais le probléme revient de maniere aleatoire
je suis en spip 2.0.10 et thelia 1.4.2.1 il y a t il d’autre piste merci
sur la nouvelle version de thelia et du plugin thelia
l’envoi de mail semble ne pas fonctionner
smtp.class a été remplacé par mail aussi
une solution ?
Autre problématique, il est impossible de modifier ou d’éditer une seconde adresse de livraison une fois celle ci saisie ...
Certes la solution proposée de mettre en commentaire des lignes dans spip_thelia_fonct.php resouds des probleme d’encodage (Nom et adresse client, pays, modalité de paiement, mais elle créée chez moi de nouveaux problème :
Sous spip, la description du produit grâce au modèle « produit.html » dans un article comporte maintenant des problèmes d’accent. Paradoxe : le chapeau est le titre sont bien codés ! Ces erreurs se retrouvent aussi au niveau de la description des produits dans la boutique.
Qui a une solution qui fonctionne totalement ? Ou qui sait pourquoi j’ai ce problème.
Merci de votre aide
Laurent
Bonjour à tous,
J’ai le même souci. La solution proposée permet de résoudre les problèmes d’accent pour le titre, mais elle ajoute un nouveau problème d’accent dans le champ description.
Avez-vous trouvé une réponse à ce problème ?
Merci pour votre aide !
j’avais trouvé ca sur un forum et ca marche bien :
dans cnx.class.php
mysql_query(« SET CHARACTER SET ’latin1’ ») ;
avant le
return self: :$db_handle ;
bonjour et merci cela résout effectivement ce pb
Problème récurrent d’encodage des caractères latins :
Les solutions données :
- écrire « include_spip( »inc/charsets« ) ; » au début de spip_thelia_fonc.php (juste en dessous de
Répondre à ce message
Bonjour,
Utilisant Spip Listes , j’ai effectivement une erreur sur la page en question.
La voici : « Fatal error : Cannot redeclare class PHPMailer in D :\wamp\www\projets\codim\spip\lib\phpMailer\class.phpmailer.php on line 35 »
J’ai cherché dans fonctions/moteur.php mais je n’ai pas la ligne suivante (citée ci-dessus) à la ligne 58 :
« include_once( »classes/Smtp.class.php« ) ; »
La mise en commentaire de la ligne qui pourrait être équivalente, à savoir « include_once( »classes/Mail.class.php« ) ; » n’enlève pas le bug.
J’utilise Spip 2.0 et Thelia 1.4.3.
Quelqu’un aurait-il une solution ?
Merci d’avance,
Webbud
Malheureusement, SPIP-Listes n’utilise pas le répertoire lib comme thelia.
Il faut donc changer le lien vers class.phpmailer en ligne 11 de spiplistes_mail.inc.php
par : include_spip(’../../lib/phpMailer/class.phpmailer’) ;
avec spip-listes dans le répertoire auto.
Merci bien pour la soluce, je garde en note ! ... entretemps j’avais retiré mes squelettes persos du répertoire squelettes et les ai placé dans le répertoire par défaut squelettes-dist... et le problème a disparu. Enchantement ?
Répondre à ce message
Bonjour,
Une boucle spip_thelia de type : prodabonnement_commande ne produit rien.
type de boucle :
Une erreur de syntaxe ou faut-il créer une fonction boucleprodabonnement_commande pour que ça marche.
Merci Alain
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 :
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.
Suivre les commentaires : |