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
J’ai une rubrique spip en anglais la numéro 2.
J’ai une rubrique Thélia numéro 2
Quand je vais sur la rubrique 2 de Thélia, j’ai le tout en anglais ???
Merci d’avance
J’ai eu la même chose. j’ai résolu le problème en passant le parametre de langue dans les urls.
C’est pas top mais ça fonctionne.
Exemple :
Répondre à ce message
Salut,
j’ai un petit souci avec la mise en évidence des rubriques visitées dans les menus.
Sur mon site, j’ai une partie dédiée à la rédaction (uniquement SPIP) et une partie boutique (gérée avec Thélia). Et 2 menus distincts.
Le problème vient des rubriques Thélia et Spip portant le même id.
Lorsque je suis dans la rubrique 1 de ma boutique, j’ai bien ma rubrique boutique 1 « exposé » dans le menu idoine mais également la rubrique SPIP 1 exposée dans l’autre menu, ce qui ne m’arrange pas :).
Voici les inclusions :
Pour le menu Boutique :
<INCLURE{fond=inc-rubriques}{id_rubrique_thelia=THELIA-RUBRIQUE_ID}>
Pour le menu Spip :
<INCLURE{fond=inc-menu-horizontal} {id_rubrique}>
Je me demandais si quelqu’un avait déjà eu ce problème et s’il existe une solution.
Merci
J’ai exactement le même problème et je n’ai malheureusement pas trouvé de solution.
Je crois que ça se mélange les crayons entre les rubriques Thelia et SPIP quelque part.
Mais ou ?
Répondre à ce message
Question bête...
Y’a t-il un moyen pour avoir des squelettes de rubriques thélia personnalisés comme avec spip ? Ex : rubrique=1.html
Peut-être :
<a href="#URL_PAGE{rubrique1_thelia,id_rubrique=THELIA-ID}" alt="THELIA-TITRE"></a>
Répondre à ce message
Bonjour,
J’ai du louper quelque chose... tout se passe très bien jusqu’à ce que je clic sur le bouton « Ajouter au panier »...
Là j’ai cette erreur qui apparait :
«
Fatal error : Unknown() : The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition navigation of the object you are trying to operate on was loaded _before_ the session was started in /mnt/148/sda/2/7/bienvenuealabadie/la-mouniche/fonctions/action.php on line 50
»
Mon site de test est là bas : http://bienvenuealabadie.free.fr
et la page de la boutique là bas :
http://bienvenuealabadie.free.fr/la-mouniche/spip.php?article15
Merci d’avance pour votre aide
Est-ce que quelqu’un pourrait m’aider pour ce problème svp ? Le plugin ne fonctionne pas avec la dernière version de Thélia (1.3.6) ou quoi ?
Bonjour,
J’ai le même type de soucis, lorsque je clic sur le bouton « Ajouter au panier »... j’ai ce message : Fatal error : Call to a member function on a non-object in f :\spip\spip1\fonctions\action.php on line 50
As-tu trouvé une solution depuis ?
Merci d’avance
Répondre à ce message
sur un spip mutualisé (un moyau plusieurs site) dont un que je voudrais utiliser avec spip, commenter la fonction chemin() dans utils.php me renvois sur le site et dans l’admin sur une page blanche...
@Al > Malheureusement tu n’as pas le choix avec Thelia.
Je pense que tu dois avoir des plugins qui utilisent chemin() au lieu de find_in_path().
Peux-tu dire quels plugins est-ce que tu utilises ?
bien sur ;)
voici la liste :
*plugin Lecteur Multimédia en Flash (MP3,flv)
* pluginAgenda 2.0
* pluginAuteurs Last (AuLa)
* le pluginBarre Typo V2 pour 1.9.2 et suivantes
* plugincfg : moteur de configuration
* pluginChamps Extras
* pluginPlugin de compatibilité avec SPIP 1.9.3 SVN
* pluginFCKeditor 2.6.3b
* plugin Image Ragged
* plugin Mutualisation facile
* pluginNo-SPAM, Halte aux Spams
* pluginInterface Thélia
* pluginSélection d’articles
* plugin Social tags
* pluginSPIP Bonux 2.0
* pluginSPIP-Listes
* pluginLiens spip_out ouvrants
* swfupload
Pour info :
en les désactivant tous a l’exeption de cfg/thelia/compat
le problème reste le même
y aurait il une incompatibilité avec la mutualisation ?
ou quelque chose que j’aurais raté ?
@Al > pour tout désactiver, il suffit de renommer le répertoire plugins/ en qq chose d’autre.
Est-ce que tu as du changement (j’imagine que déjà tu n’as plus de mutualisation) ?
Si tu n’as plus de page blanche, le plus simple est de recréer un répertoire plugins/ vierge et d’y ajouter les plugins un à un, en les activant successivement. Ca te permet de trouver le plugin qui foire.
Sinon tu peux chercher si un des plugins utilise la fonction « chemin() » (en faisant une recherche dans le répertoire plugins/). C’est ce que j’allais faire, mais je manque de temps..
en fait j’ai sortie la mutualisation du rep plugin (comme conseiller qqu part dans les docs sur ce site d’ailleurs
j’avais laisser le plugin mutu dedans, mais je l’ai effacé depuis
je penche pour un problème de mutualisation en fait...
mais la je seche un peu
parce qu’en gardant simplement cfg/thelia/compat
le probleme reste le meme
et en enlevant le plug thelia
ca revient...
donc...
Enfin si tu as une idée ou que quelqu’un en a une
il est le bienvenu :d
Répondre à ce message
Merci Gilles
Pour cette réponse on ne peut plus rapide, je venais de lire ce qui concerne la mutualisation sur Spip et l’article : Base de données sur la gestion de différents appels à des bases de données externe, c’est ce vers quoi je vais me tourner sûrement.
Merci encore de cette réactivité
Bien à tous
eric
Répondre à ce message
Bonjour,
Je lis « Vous pouvez installer SPIP et Thélia dans la même base. »
Ok pas de soucis.
FAce à la demande suivante :
- Spip « portail »
- 2 boutiques « thelia »
- Un seul compte bancaire pour les reglement des 2 boutiques.
Puis je :
Mettre Spip et 2 thelia sur la meme base (facilité de sauvegarde 1 seule base)
Si oui : comment proceder pour différencier les différentes tables des 2 thelia pour eviter les melanges lors de l’affichage de l’une des deux boutiques, je sais que je dois placer QQchoses avant le nom de chaque table, cela doit il etre fait manuellement via phpmyadmin et surement qq chose à modifier dans mon fichier « connect.php ».
Merci à vous si vous avez qq éléments de reponses
Cordialement
Eric
je parle sous le contrôle d’Arnaud, mais il me semble que ce n’est pas possible de mettre 2 Thélia sur une même base.
Et vu le mécanisme de balise Thélia, je ne crois pas qu’on puisse, comme dans SPIP, faire référence à des éléments dans une base externe : donc un squelette SPIP/Thelia ne peut pas faire appel à 2 Thelia sur 2 tables différentes.
Par contre, tu peux utiliser la mutualisation de SPIP pour avoir 2 sites SPIP(+Thelia) basés sur un seul noyau SPIP (donc plus facile à maintenir si c’est l’élément recherché. Mais ça ne change rien au fait de devoir avoir 2 bases distinctes
.Gilles
Répondre à ce message
J’ai entièrement testé et j’avoue que les 2 combinés (SPIP et Thélia) fonctionnent à merveille.
Bravo.
Répondre à ce message
Bonjour,
j’ai un problème lors d’une nouvelle installation de spip 1.9.2.e et de thelia 1.3.8.
En effet, lorsque j’affiche les pages rubrique_thelia ou produit, il me met ce message :
Warning : mysql_num_rows() : supplied argument is not a valid MySQL result resource in /…/fonctions/boucles.php on line 965.
Mon autre pb est que lorsque je valide mon panier, je m’enregistre et il ne veut pas me livrer en « france métropolitaine » alors que tout est OK dans la partie Admin gestion des zones de transport.
Merci
Olivier
Bonjour, je rencontre exactement le même problème qu’Olivier, décrit ci-dessous, avec les les mêmes versions de Thelia et de SPIP. Je suis en phase de test pour m’autoformer à ce très intéressant plugin,
merci pour la création de ce plugin !
et si quelqu’un a une réponse, merci d’avance !
Salut,
il est question de cette erreur sur le forum de Thélia, liée peut-être à la version 1.3.8. de Thélia
de mon côté je vais installer cette version sur http://plugin-thelia.openstudio.fr pour voir si je reproduis le warning.
a+
J’ai exactement le même problème.
Pas de solutions ?
Cordialement,
Z.
la solution indiquée sur le forum de Thélia :
Remplacer dans /fonctions/boucle.php, ligne 964 :
Par :
Bonjour Olivier,
J’ai exactement le même soucis concernant la livraison. Il refuse de livrer en France métropolitaine (et dans n’importe quel autre pays d’ailleurs). Je ne souhaite pas faire livrer, mais fournir le produit sur place et là encore...impossible. As-tu trouvé, depuis, la solution ?
Merci
Paname
Bonsoir,
J’ai eu le problème, il disparaît si on enlève les boucles conditionnelles pour le transport. Si c’est ton cas :
enlève dans adresse.html :
<T_transport>
et
Cette condition n’est pas nécessaire (gérer les zones de livraison au niveau de l’espace d’admin thélia) et semble poser problème avec la version 1.3.8 de thélia et le plugin spip/thélia
En espérant que celà te soit utile,
a+
C’était effectivment ce code qui me bloquait !!! Il fallait le trouver. Merci beaucoup en tout cas et « comme on dit », l’épine (non, le sabre) n’est plus dans mon petit peton. Mes respects ;) en espérant que le monsieur tout rouge soit généreux à nöel !
Bonjour à tous,
J’ai parlé trop vite.
Après avoir été bloqué par la boucle conditionnelle “T_transport” qui m’empêchait de passer l’étape de la livraison, je pensais être sorti d’affaire. La solution d’Arnault m’a permis de déverouiller l’étape “livraison” mais n’a fonctionné que quelques heures...
A ma grande surprise, le bouton « continuer » présent à l’étape 3 de la livraison me fait dorénavant buguer le navigateur. Firefox me dit :
Quelqu’un a déjà eu ce soucis ?
Merci à tous.
Répondre à ce message
Bonjour,
J’ai une jolie erreur.
Quand je valide le panier, le lien part vers spip ?page=adresse mais ça redirige automatiquement vers connexion.php. Et bien entendu y’ a pas de connexion.php.
Une idée ?
Cordialement
T.
Il faut copier les fichiers qui se trouvent dans /pb_htaccess (dont connexion.php..) à la racine de votre site.
a+
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 : |