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(" -> ", $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(" -> ", $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
Discussions par date d’activité
304 discussions
Bonjour,
J’ai installé cet excellent plugin, mais j’ai quelques petits problèmes avec les pages de validation du panier... J’accède bien à la page du panier ainsi qu’à la page de connexion, mais si je clique valider, que ce soit avec un utilisateur existant ou avec un nouvel utilisateur, j’ai une erreur HTTP 400... Idem si j’essaye d’appeller la page=adresse
Est-ce que quelqu’un peut m’aider ? S’agirait-il d’un problème sur le plugin ou de configuration de mon webserver (en local, je tourne sous wamp).
Merci d’avance
Salut,
Peut-être un pb au niveau des fichiers de redirection (cf étape 2 Fichiers de redirection) ?
Il faut que tu copies le contenu du répertoire pb_htaccess à la racine de ton site (ou que tu utilises la méthode alternative basée sur le htaccess).
a+
Effectivement, c’était bien cela... Le problème n’apparaissait qu’en local, parce que mon site se trouve dans un sous-dossier...
Merci
Répondre à ce message
Bonjour !
J’ai un souci concernant une reinstallation en local du tandem spip/thelia.
Pour spip tout est ok (SPIP 1.9.2d)
Pour thelia (plugin-thelia-1.1dev) j’ai changé les parametres de connexions à la BDD dans cnx.class.php mais ca n’a pas l’air de suffire !
Je visualise bien la page de connexion à l’admin de thélia mais l’identification (login mot de passe) ne marche pas ! je n’ai aucun message informatif.
Quelqu’un voit il le problème ?
Merci de votre aide !
Salut, il faudrait que tu vois du côté de Thélia, il y a des message à ce sujet sur le forum Thélia : http://forum.thelia.fr/viewtopic.ph...
++
Merci beaucoup ! il fallait effectivement entrer root pour le login et le mdp !
Répondre à ce message
Bonjour, je teste actuellement votre plugin et je vous félicite d’ailleurs tous pour ce travail :)
y’a t’il un moyen de passer la référence d’un article spip au panier Thelia ???
ou mieux dans mon cas de passer le titre/description d’un document associé a cet article Spip ?
Merci de vos réponsses,
A++
Salut,
tu veux dire, pour chaque produit dans le panier, aller chercher l’article spip associé (associé via l’espace privé) et en afficher le descriptif du document joint ?
Merci pour ta réponse si rapide
En fait j’ai une grosse photothèque, trié par marque et ensuite par modèle, les photographes sont gérés pour le tri par mots clef. J’ai donc créé une rubrique pour la marque et pensait créé un article par modèle ou je joint toutes les photos du modèles en mode document (ma référence photo étant dans le champ titre ou description). Mes produits thelia sont donc le type de tirage que le client choisit avec en option l’encadrement ... j’ai associé mes produit thelia a ma rubrique et affiche pour chaque article mes options d’achat et de tirage, je tente donc de passer ma référence photographique au panier pour que mon prestataire puisse savoir quelle photo est commandée.
en gros voila ma problématique (je passe sur les problèmes de droits d’auteur des tirages qui sont tous de photographes différents et la rémunération en fonction des références achetées !!! :) )
Sinon autre option c’est de créer une sous rubrique par modèle et un article par photo .. je pensse que c’est plus simple a gérer au niveau du plug in thelia et des associations Produit <-> Articles
je continue a chercher comment ajouter le titre de mon article spip ou le champ PS a mon panier Thelia, actuellement je tente de rajouter une variable a une session d’achat (pour en fait passer au panier et commande la référence d’un article Spip), j’ai donc dans un premier temps ajouter ma déclaration de variable dans
moteur.php :
Code :
if(!isset($_REQUEST[’article_spip’])) $article_spip=« » ; else $article_spip=$_REQUEST[’article_spip’] ;
et modifié dans action.php la fonction d’ajout au panier
Code :
// ajout panier
function ajouter($ref, $quantite=1, $append=0, $nouveau=0, $article_spip)
if($quantite ==« » || $quantite == 0)
$quantite = 1 ;
$perso = array() ;
$i = 0 ;
// vérification si un produit avec la même déclinaison est déjà présent
foreach ($_REQUEST as $key => $valeur)
if(strstr($key, « declinaison »))
$perso[$i] = new Perso() ;
$perso[$i]->declinaison = substr($key, 11) ;
$perso[$i]->valeur = stripslashes($valeur) ;
$i++ ;
$_SESSION[’navig’]->panier->ajouter($ref, $quantite, $perso, $append, $nouveau, $article_spip) ;
après dans mon formulaire produit j’ai rajouté un champ Hidden :
Code :
ça marche pour mon panier, mais si je recharge la page ou si je valide la commande ça ne marche plus ...
Est-ce que je m’y prend bien ? ou est ce complètement irréalisable de cette manière ??
je pense biensur au final en faire un ptit plug in THELIA pour ne pas que ces modifs ne nuisent aux mises a jour future du noyau ...
Merci de vos conseils si quelqu’un a une idée ...
Salut,
Désolé pour le temps mis à répondre, c’est un peu la course en ce moment.
J’ai eu un pb similaire : des anciens numéros d’une revue à commander, un seul produit thélia (ancien numéro) et une déclinaison (numéro de revue).
En principe on aurait du avoir une sélection du numéro puis un bouton « ajouter », associé à l’article SPIP. J’ai simplement (via javascript) caché la sélection du numéro et positionné automatiquement le numéro, avec la déclinaison du même nom que le titre de mon article spip.
Ce qui fait que sur l’article « N°12 » par exemple lorsqu’on clique sur ajouter, on ajoute le produit thélia « ancien numéro » avec comme déclinaison « N°12 ». Dans la suite de la commande, on conserve donc l’info sur le numéro commandé.
++
Répondre à ce message
Personne n’a une tite suggestion ????
ça doit être faisable tout de même de récuperer lors de l’ajout au panier le titre de l’article spip a qui le produit thelia a été associé (tout est en base de donnée), pour chaque ligne article de la commande ???!!!!
Répondre à ce message
Bonjour,
lorsqu’un nouveau client cré un compte, les caractères accentués ne passent pas et me font des caractères bizares. Avez-vous ce problème ? Et comment le résoudre SVP ?
Merci
Olivier
Quelle version du plugin utilises-tu ? On a corrigé ce problème dans la dernière version : (plugin-thelia-dev.zip)
les variables post et get sont converties en iso pour thélia puis remises en utf8 pour spip
a+
Voici ce qui est noté pour la version 1.1 : lundi 19 mai 2008, 11:05:34 (UTC+0200)
Revision : 20572
Si je n’ai pas la dernière, que faut-il modifier ?
Merci
c’est bien ça, il faudrait installer la dernière version en développement du plugin. Tu peux la télécharger ici.
Il suffit de remplacer les fichiers du plugin dans /plugins/plugin-thelia
A+
meme problemen qu’olivier mais je n’ai pas envie d’écraser l’ensemble des pages modifiées en installant la nouvelle version du plug-in... N’y aurait-t-il pas plus simple ?
Salut,
je viens de mettre à jour la version officielle du plugin (
plugin-thelia.zip
) avec la dernière version en cours.Cette version correspond désormais à la version 1.2 du plugin, laquelle comprend les correctif pour les formulaires.
Si tu préfères patcher ta version, la conversion des variables de formulaires se fait dans spip_thelia_fonct.php : ligne 42 :
et ligne 141 :
++
merci pour l’intention mais ça ne fonctionne pas mieux avec ce patch...
et bien j’ai eu plus de chance, ça a marché du premier coup pour moi...
mon spip était encore en iso889 et quelques (pas en utf8). Après passage en utf8, tout est rentré dans l’ordre, merci donc !
Répondre à ce message
Bonjour, je viens d’installer la derniere version du plugin et tout fonctionne parfaitement. Tout ? Pas tout à fait en fait... quand je me rends sur la liste des modules d’administration de Thelia ou dans Configuration/Gestion des plugins je n’ai rien, comme si aucun plugins n’était installé... alors que les droits sont corrects (vérifiés et re-re-vérifiés), l’install est standard et les plugins sont bien là.
C’est probablement quelque chose d’idiot mais il s’agit vraiment d’une installation standard, personne ne semble recontrer ce probleme et j’avoue perdre beaucoup de temps sur ce point donc si quelqu’un a une idée, je suis sincèrement preneur ! Merci !
Une capture de l’écran se trouve sur http://www.yasd.fr/IMG/Thelia136-GestionPlugins.jpg.
corrigé, c’était un des plugins dans thélia qui était en erreur (multifact)
++
Répondre à ce message
Bonjour Arnault,
je me demande (ICI) si il serait possible de faire un pont automatique pour enregistrer les clients via Spip (qui gérerait un accés restreint par groupe pour le site) et les réinjecter dans Thélia ? Et si oui comment
Comme je ne suis pas technicienne,ben je me tourne vers les spécialistes ;-))
Merci d’avance
Répondre à ce message
Euh... pour ce qui est dans la partie « Modification légère de la syntaxe de Thélia », quels fichiers sont concernés svp ?
Répondre à ce message
Bonjour,
Qu’elle est la méthode pour réécrire les URL (URL rewriting) ?
J’ai essayé avec « htaccess.plugin_thelia.txt » en ajoutant le « . » mais faut-il le renommer .htaccess ou .htaccess.plugin_thelia ?
Ou le placer ?
Y a t-il autre chose a modifier ?
Je ne trouve pas la solution.
Merci pour votre aide
Olivier
J’ai reussi, pour obtenir :
produit.php ?ref=1&id_rubrique=1
au lieu de :
spip.php ?page=produit&ref=1&id_rubrique=1
Il faut ajouter au .htaccess de la racine le contenu du fichier htaccess.plugin_thelia.txt. Ensuite il faut mettre
<a href="THELIA-URL">THELIA-TITRE</a>
QUESTION : Que faut-il ajouter dans le .htaccess pour obtenir un url réécrit (THELIA-REWRITEURL) comme par exemple : bonbons_5_haribo__45001.html ?
Merci
Salut,
oui tu peux utiliser également la réecriture d’adresse coté thélia. Il faut ajouter dans le .htaccess le code suivant (à l’endroit où se trouvent les rewriterules) :
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 :
devient :
je viens de le mettre en place sur le site de test : http://plugin-thelia.openstudio.fr/...
++
Bonjour,
ca ne marche pas chez moi, j’obtiens bien une URL du type tbonbons_5_haribo__13349.html mais la page est en erreur 404, avez-vous une idee ?
je dirais que le .htaccess n’est pas correctement interprété. peut-être que les rewriterules pour thélia sont au mauvais endroit .. ?
as-tu un lien qu’on regarde ?
en complément, peux-tu m’envoyer en mp ton fichier .htaccess pour vérifier si il est correct ?
J’essaye également de ne pas afficher le spip.php dans mes url. Pourriez vous être plus clair sur le « Ensuite il faut mettre »code"xxx THELIA-TITRE /
Où cela ce passe t’il... en remplacement de quoi ?
Merci
PS : comment mettre du code dans les posts sur ce forum ?
comment joindre un auteur en message privé
désolé, pas trouvé l’aide à l’utilisation de ce forum... Merci bcp
le post précédent fait référence au post :
URL rewriting 5 juin 2008 23:37, par olivier
ok j’ai trouvé,
dans inc-rubriques.html
remplacer
#URL_PAGErubrique_thelia,id_rubrique=THELIA-ID
par
THELIA-URL
par contre, comment modifier les url des pages « connexion » « panier » « mdpoublie » ???
merci
Répondre à ce message
Bonjour
J’ai deux installations spip/thelia sur le même serveur (2 sites différents mais même config). L’une fonctionne parfaitement. L’autre me fait un truc bizarre : le modèle produit, appelé dans un article, s’affiche bien dans l’espace privé (affiche les balises Thelia), mais rien sur le site public ! Quelqu’un aurait-il une explication ?
Salut,
c’est peut-être :
- un pb de css, dans ce cas tu devrais voir les produits dans le code source,
- la boucle thélia ne retourne aucun produit. les produits sont en ligne ? essaie de mettre
<produit|rubrique=1>
pour élargir l’affichage à tous les produits de la rubrique 1.sinon, si t’as un lien, on peut regarder.
a+
alors lààààà, honte à moi ! ça fait des jours que j’épluche tous les squelettes, tous les scripts... et les produits n’étaient tout simplement pas en ligne ! merci !
:)
je te rassure, on s’est tous fait avoir de la même façon, avec des produits qui n’étaient pas cochés « en ligne » !
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 : |