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

Footnotes

[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

Portfolio

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.

updated on 13 April 2018

Discussion

6 discussions

  • J’essaye de mettre en place l’authentification unique et j’ai un peu de mal à comprendre ce qui se passe et pourquoi.

    -  Si on est déjà connecté SPIP, je vois que c’est le formulaire de login THELIA qui est présenté.

    -  Si on n’est pas connecté SPIP, c’est le formulaire de login SPIP qui est présenté. Donc on se connecte SPIP, mais tout de suite après le formulaire login THELIA est présenté.
    Il semble qu’on ne peut pas se connecter en une seule opération ? Est-ce normal ?

    J’espère que Arnaud pourra m’éclairer :)

    Reply to this message

  • 2

    Bonjour à tous et aux créateurs de ce plugin en particulier.

    J’envisage de passer en SPIP3.1 puis en SPIP3.2. Le plugin n’est pas compatible depuis 3.1

    Je pourrais m’occuper de la migration du plugin pour une compatibilité 3.1/3.2
    mais avant de me lancer, j’aimerai évaluer la faisabilité et la charge de travail.

    Est-ce qu’un des développeurs de ce plugin peut me donner son avis sur le travail à faire pour migrer ce plugin ?

    • As tu deja simplement essayé de voir s’il n’était pas compatible 3.2 mais juste pas marqué comme tel?

    • Hi Maïeul

      Euh non, mais la teneur de certains échanges dans ce forum semble indiquer qu’il n’est pas compatible.
      Je vais faire un essai alors.

    Reply to this message

  • 3

    Bonjour,
    Je suis une néophyte (je réalise actuellement mon deuxième site en SPIP), et ce dernier doit inclure une boutique. J’ai vu que Thelia ne pouvait pas encore fonctionner avec la derniere version (SPIP 3.1), donc je pensais utiliser SPIP 3 + Thelia 1.5.4 + Plugin Thelia-SPIP. Pourriez-vous me dire si vous pensez que cette solution est adaptée à une personne qui n’est pas développeur ? Est-ce qu’il y a assez de documentation pour éclairer un débutant ? Merci pour vos lanternes...

    • Salut,
      Thélia est devenu incompatible avec SPIP depuis sa version 2. Et la version 1.5 n’est plus activement développée, ce qui explique que le plugin n’évolue pas (que l’on me corrige si je dis une grosse boulette).
      Perso, je pense que tu peux utiliser Prestashop assez facilement à côté du site SPIP, même si cela casse la simplicité que l’on avait.
      Avec un peu de codage et/ou des boucles externes, il est cependant assez facile de faire interagir les deux outils.
      Qu’est-ce que tu veux faire ?

    • Bonjour Gilles, et merci pour ton aide. Tu as raison concernant la version 2 de Thelia, elle n’est plus compatible avec SPIP.
      J’ai finalement réussi à intégrer Thelia (v1.5.4) à SPIP (v.3.0.22), avec accès à l’interface Thelia et son catalogue dans l’espace privé de SPIP, grâce au plugin Thelia-SPIP. Mon erreur était liée à l’arborescence des dossiers. Il faut mettre tous les fichiers confondus de SPIP et de THELIA au même niveau (htdocs)(sauf index.php de Thelia, car il existe déjà un fichier du même nom dans SPIP. Une autre chose importante à faire est de renommer le dossier Admin de Thelia dans plugins/auto/plugin-thelia/spip_thelia_options.php. Il faut réécrire la ligne define(’_THELIA_ADMIN’, ’admin_suffixedudossieradmin’);
      Il faut aussi renommer ce dossier dans le formulaire CFG de Thelia sur l’espace privé de SPIP.

      Cela pourra aider éventuellement certains qui auraient des difficultés comme j’ai eu, lors de l’installation...

      Maintenant je passe à la deuxième étape, l’intégration des boucles Thelia/SPIP dans mes squelettes... J’avance à tâtons...

      J’ai l’impression qu’il y a plus de documentation sur l’usage de Thelia que Prestashop dans SPIP, ce qui me rassure un peu n’étant pas développeuse... mais débutante. Est-ce que je me trompe ?

      Je cherche à faire un site qui ressemble un peu à ça : https://ocula.com/
      D’ailleurs, ce serait un site fait avec SPIP et Prestashop...
      voir : https://www.mail-archive.com/spip@rezo.net/msg70911.html

      Qu’en pensez-vous ? Pourrais-je arriver à un résultat similaire avec Thelia ?

      Merci encore pour votre aide, et tout ce travail commun.

    • Bonjour tous,

      Je relance ce sujet récurrent sur la compatibilité du plugin Thélia avec SPIP 3.1

      Je suis en SPIP 3.0.20 [22255] + Thelia V 1.5.4.2 + plugin spip-Thelia1.5 [68537] et très content de cette solution e-commerce simple et efficace ( http://www.tigoo-miel.com )

      J’ai bien compris qu’il ne fallait pas attendre un upgrade du plugin Thélia compatible SPIP3.1 ... mais quelqu’un s’est t-il déjà hasardé à tenter l’expérience, laisser le plugin en l’état et passer en SPIP 3.1 ? Avec mon niveau technique rudimentaire, je peux éventuellement envisager des adaptations à la marge, mais certainement réécrire la totalité du plugin.

      Les expériences sur le sujet m’intéressent ! Merci d’avance.

    Reply to this message

  • 3

    Suite a une mise à jour de SPIP 2.0.10 vers 2.0.25, je rencontre un problème de configuration.

    Lorsque j’accède au catalogue Thelia via SPIP j’ai ce message d’erreur:

    “Le dossier d’admin de Thélia n’a pas été trouvé. Vérifiez que le chemin est correct dans le formulaire CFG de paramétrage du plugin.”

    Très bien mais lorsqu’on accède au formulaire CFG, nous avons ce message:
    “Accès refusé (cfg spip_thelia - spip_thelia -” et on ne peut rien faire ...

    Je peux accèder à Thelia via l’URL d’admin (sans passer par SPIP).

    Que puis je faire pou débloquer la situation ?

    Nous utilisons Thelia v1543.

    Merci !

    • J’ai le même soucis, “« Le dossier d’admin de Thélia n’a pas été trouvé. Vérifiez que le chemin est correct dans le formulaire CFG de paramétrage du plugin. »”. Aviez-vous trouvé une solution ? J’y suis depuis des heures... rien n’y fait ! Merci d’avance...

    • Hello,
      Trouvé une solution depuis ?
      Merci

    • Salut Paulbe,
      J’ai finalement opté pour laisser de côté Thelia... j’ai préféré garder une version plus récente de SPIP et d’y intégrer les modules complémentaires pour faire du e-commerce. Si tu as besoin d’aide de ce côté là, vas voir du côté du forum, le sujet :
      http://forum.spip.net/fr_266806.html

    Reply to this message

  • 2

    Bonjour,
    J’ai tenté d’installer deux fois de suite le plugin en local sur wamp,
    mais à chaque fois ce message apparait :

    Warning: include_once(C:\wamp\www\spip\classes/Cnx.class.php) [function.include-once]: failed to open stream: No such file or directory in C:\wamp\www\spip\classes\Requete.class.php on line 28

    Warning: include_once() [function.include]: Failed opening ’C:\wamp\www\spip\classes/Cnx.class.php’ for inclusion (include_path=’.;C:\php5\pear’) in C:\wamp\www\spip\classes\Requete.class.php on line 28

    Fatal error: Class ’Cnx’ not found in C:\wamp\www\spip\classes\Requete.class.php on line 34

    Quelqu’un pourrait m’indiquer de quoi il s’agit?
    Merci

    • Avez-vous lancé également l’install de thélia (/install) ?
      Vérifiez avant de tester le plugin, que thélia fonctionne correctement : que vous avez accès à l’espace d’admin dans /admin

    • Bonjour Arnault !

      J’ai deux questions un peu basiques certes, mais je suis débutante...

      1/ J’ai installé MAMP en local.
      Voici mon arboresence :
      MAMP > htdocs > SPIP > (tous les dossiers de SPIP)
      THELIA (tous les dossiers de THELIA)

      (SPIP et THELIA sont au même niveau, dans mon dossier htdocs).
      Est-ce convenable ?

      J’ai copié le dossier plugin-thelia/pb_htaccess à la racine de mon site (dans le dossier SPIP)
      Est-ce convenable ?!

      2/ Lorsque je vais sur localhost/thelia/install/choixbase.php, j’ai le choix entre la base de données mysql, performance_shema ou spip.
      Dois-je choisir SPIP ou mysql ???

      Désolé de vous embêter, merci pour votre précieuse contribution :-)

      Lucie.

    Reply to this message

  • 1

    Bonjour Arnaud

    J’aimerai savoir si ce plugin est toujours maintenu ?
    ou plus exactement, y’a t’il une bonne âme pour prendre en compte une petite évolution ?

    En effet, ce plugin force l’insertion de spipthelia.css dans le header.
    Il est impossible de surcharger, d’écraser, ce fichier avec un autre spipthelia.css, de façon à éviter d’embarquer des css et des images inutiles.

    Ce problème avait déjà été remonté sur la zone : http://archives.rezo.net/archives/s...
    et une solution simple y est donnée.
    Mais il faut modifier la fonction spip_thelia_insert_head($flux)

    • ploufplouf

      Bonjour,

      En effet c’est bien dommage que ce plugin ne soit plus suivi car il offrait la possibilité d’un site e-commerce avec toute la gestion utile de la gestion des produits, des paniers, des clients et des règlements, ce qui reste encore un peu difficile avec les plugins actuels.

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom