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

Notes

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

Dernière modification de cette page le 13 avril 2018

Discussion

303 discussions

  • Bonjour

    que deviens la solution SPIP-thelia avec la nouvelle version thelia 2 ???

    Répondre à ce message

  • Frederic Pairot

    Bonjour à tous,

    Lors de l’activation du plugin j’ai l’erreur suivante :
    Fatal error : Call to undefined function lire_config() in [monsiteweb]/plugins/plugin-thelia/spip_thelia_options.php on line 25

    Ma config est : spip 2.1.9 et Thelia 1.3.4

    Queqlu’un a-t-il une idée pour m’aider ?

    Merci ;-)

    Répondre à ce message

  • Bonjour,

    Mon club de sport souhait intégrer le une boutique à son site en spip+Zpip+noisetier.

    J’aimerai intégrer la boutique thélia dans la rubrique « boutique ». J’ai suivis comme j’ai pût l’installation decrite ci-dessus. J’ai dût récupérer le fichier squelettes_zpip dans a zone. J’ai pris la revision 33446.

    Dans la partie admin j’ai accès au BO de thélia, mais comment faire pour afficher la partie plubic du site thélia ?

    Répondre à ce message

  • bonjour, voila j’ai fais la derniere mise a jour de thelia
    j’utilise thelia spip

    dans le front office la connexion se fait bien pour passer commande mais impossible d’aller plus loin pas de redirection vers moyens de transport
    pour ke ça reparte j’ai remis l’ancien dossier fonction et ça remarche

    la je fais une sauvegarde, et vais essayer de fouiller déjà du coté de thelia spip mais c’est galere

    une idée ?

    Répondre à ce message

  • 1
    Nora Neko

    Bonsoir ! S’il faut installer les fichiers de Spip et Thelia dans le même répertoire, quid de index.php ? on garde celui de spip ou de thelia ?

    Merci d’avance...

    • celui de spip car avec thelia spip, ton site tourne sur spip mais en integrant ta boutique dedans

    Répondre à ce message

  • buvette1

    Bonjour à tous,

    j’ai un site multilingue en spip 3.0.10, Thélia et le plugin.
    Tout fonctionne très bien sauf l’url rewriting... si je sors des url standards pour prendre propres par exemple, cela ne fonctionne plus.
    En fait le critère de langue bloque :
    l’url apparait donc en propre avec la langue sous la forme :« &lang=fr »
    cela renvoie vers une page d’erreur 404.
    En revanche si par exemple je modifie l’adresse et que je mets la langue sous la forme «  ?&lang=fr », avec donc le point d’interrogation devant, cela marche.
    D’ou cela peut-il venir ?
    et comment faire en sorte que le point d’interrogation se mette à chaque fois, ou alors que l’url rewriting marche nativement ?

    Merci d’avance pour vos bonnes idées

    Répondre à ce message

  • quelle intérêt d’associer SPIP et THELIA, ce dernier n’est-il pas suffisant pour réaliser un site marchant ?

    Répondre à ce message

  • validation de la commande pour un client existant :

    Bonjour

    Je mets en place une boutique SPIP / thelia (SPIP 3.0.10 / thelia 1.5.4.1)
    La connexion des articles SPIP vers les produits thelia fonctionne.
    L’ajout de produits au panier foncionne, mais je rencontre un probleme pour valider la commande d’un client existant.

    Pour un nouveau client , pas de problème, on passe par la saisie des coordonnées via la page « connexion » et la validation de cette saisie appelle bien la page suivante (page adresse).

    En revanche, pour un client existant, dans cette page « connexion », si je saisis l’adresse mail et le mot de passe du client, après validation du formulaire, je ne suis pas redirigé vers la page adresse pour continuer à traiter la commande, je reste sur cette page connexion ?

    J’ai utilisé les squelettes fournis par le plugin, c’est donc bien le inc-connexion qui est en jeu , mais je ne vois pas pourquoi ca bloque ?

    Si vous avez une idée je suis preneur .

    Répondre à ce message

  • 1

    Probleme avec une Erreur SQL 1146

    Bonjour

    Je suis en train d’installer la solution SPIP / Thelia

    Je suis avec un spip 3.0.10 / thelia 1.5.4.1
    le plugin spip « interface Thélia 1.5 »

    J’ai paramétré le plugin qui trouve bien mon dossier admin thelia,
    mais dès que je regle la fonction « Associer des produits Thélia aux articles SPIP : » sur oui
    dès que je veux éditer un article, j’ai une Erreur SQL 1146
    voici le message exacte :

    Erreur SQL 1146
    Table ’aqua_juin2013.spip_rubriquesthelia_articles’ doesn’t exist
    SELECT rubriquesthelia_articles.id_rubriquethelia FROM spip_rubriquesthelia_articles AS `rubriquesthelia_articles` WHERE (rubriquesthelia_articles.id_article = 337)

    j’ai supprimé le cache, mais rien à faire ?
    avez vous une idée

    jacques

    • Je me réponds, cela servira probablement à d’autres

      J’ai lancé une « réparation de la base » dans la maintenance de Spip et tout est rentré dans l’ordre

      jacques

    Répondre à ce message

  • Bonjour et, tout d’abord, merci pour ce formidable plugin,

    J’ai une suggestion de modification du plugin pour sa prochaine mise à jour (voir plus bas).

    Je développe actuellement un site SPIP 3, basé sur un squelette zpip et, entre autres, sur le plugin Thelia (pour la partie e-commerce).

    Et là où je bloque, c’est que je n’arrive pas à surcharger la feuille de style spipthelia.css.

    Pourtant j’arrive sans problèmes à surcharger les feuilles de styles d’autres plugins :

    Exemple avec le plugin Varicelle :
    en copier la feuille de style en « squelettes/css/varicelle.css », les modifications s’appliquent en remplacement de la feuille de style du plugin (« plugins/auto/varicelle/v0.2.1/css/varicelle.css »).

    J’ai essayé en copiant la feuille de style livrée avec le plugin thélia (« plugins/auto/spip_thelia/v1.5/spipthelia.css ») en différents endroits :
    En racine du dossier « squelettes », en ajoutant, dans « squelettes/inclure/head.html » :
    [ » type="text/css » media="projection, screen, tv » />]
    Dans le sous-dossier « squelettes/css »,
    j’ai même tenté un ajout des styles de spipthelia.css dans la habillage.css du thème zpip

    Rien n’y fait :
    à chaque tentative (en vidant bien les caches du navigateur et de SPIP, à chaque fois) j’ai le même résultat :
    la feuille de style « plugins/auto/spip_thelia/v1.5/spipthelia.css » prend le dessus et, dans Firebug, tous les styles de thelia, situés hors du dossier plugins, sont barrés.

    Une idée ?

    Peut-être un début de piste :
    Est-ce que cela a un rapport avec le fichier « plugins/auto/spip_thelia/v1.5/spip_thelia_fonctions.php » ?
    qui contient notamment les lignes suivantes, débutant ligne 68 :

    function spip_thelia_insert_head($flux) {
            $flux.="<link rel=\"stylesheet\" href=\""._DIR_PLUGIN_SPIP_THELIA."spipthelia.css\" type=\"text/css\" media=\"projection, screen, tv\" />";
            return $flux;
    }

    toujours est-il que si je modifie la ligne 68 (ajout de _css) :
    function spip_thelia_insert_head_css($flux)

    et que j’ajoute à "squelettes/inclure/head.html" :

     [(#REM) Feuille de style CSS pour Thelia ]
    [<link rel="stylesheet" href="(#CHEMIN{spipthelia.css}|direction_css)" type="text/css" media="projection, screen, tv" />]

    Dans ce cas seulement, je peux alors surcharger les style de thelia et les adapter à ceux de mon thème zpip.

    Une modification allant dans ce sens dans la prochaine mise à jours du plugin serait une bonne chose.

    Merci d’avance.

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

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