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

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.

Discussion

304 discussions

  • 3
    nounours2

    bonsoir, petit souci avec le panier
    http://r19079.ovh.net/~jina/spip.php?page=panier&lang=fr

    quand je demande ou enleve de la quantité, il me dit que le fichier est introuvable, ça peut venir de quoi ?

    Répondre à ce message

  • 10

    Bonjour et merci pour tout ce travail,
    je viens d’installer Spip 2.1.12 avec Thélia 1.5.1 et l’Interface Thélia 1.4.3, mes squelettes sont sous Zpip, mais je ne trouvé pas les pages à mettre dans mon dossier squelette :
    « Pour zpip, vous devez :
    -  copier le contenu du répertoire plugin-thelia/squelettes_zpip dans votre répertoire /squelettes »
    Ai-je oublié quelque chose ?

    Autre info ; j’ai cherché le bouton "Thélia" dans "Edition" qui est maintenant dans "Configuration" est-ce un oubli dans la doc ?

    Cordialement

    • nounours2

      plus non plus de bouton thelia dans édition, c’est bizarre

    • Bonjour,
      je crois avoir vu que le bouton Thelia est maintenant déplacé dans « Configuration » pour ne pas laisser la main aux administrateurs restreints ou rédacteurs car ce bouton « Configuration » disparait pour ces auteurs.

      Pour les squelettes je cherche en vain, non ???
      Merci de votre attention.

    • nounours2

      aucun bouton nul part
      et réinstaller plusiieur fois le plugin

    • Bjr, pour avoir le bouton, il faut être webmestre, avoir installé thélia à la racine du site et le plugin thélia-spip et cliquer sur « Configuration » pour avoir le bouton du plugin Thelia au même niveau que « Contenu du site », « Interactivité », « Fonctions Avancées »

      Enfin chez moi c’est comme celà.

      Cordialement.

    • nounours2

      nan, tjs pas
      je suis webmestre sur mon site oui
      mais en plus quand le plugin est activé, il me met des erreur de mémoire et compagnie, sincerement ça fait plus d’un an que j’essaye, je pense que je vais abandonné

    • nounours2

      le message d’erreur

      Fatal error : Allowed memory size of 16777216 bytes exhausted (tried to allocate 16384 bytes) in /home/jina/www/classes/parseur/Analyse.class.php on line 70

    • Bonjour,
      pour moi c’est la taille mémoire chez ton hébergeur, si tu peux (en local c’est possible) dans le php.ini, change la ligne qui dit memory_limit et mets la à 32M
      Sinon contacte les ou change !!!

    • nounours2

      bon, j’ai modifier mon php.ini, plus de souci avec la mémoire

      maintenat l’essai de monter un site qui ressemble à quelque chose

      merci alainF

    • nounours2

      en tout cas :

      le plugin est peut etre super, mais c’est grave galere d’integrer thelia a spip sur un site deja existant
      y a quasi tous les fichiers à modifier, contre contre je m’y suis peut etre mal pris !!!

      enfin, c’est mon avis !!!

    • dans la version d’aujourd’hui squelettes_zpip/ est nommé contenu/ il suffit de déplacer ce dossier tel quel dans squelettes/

      j’ai pas cru voir de réponse à la 1re question...

    Répondre à ce message

  • nounours2

    ddonc j’ai modifier mon php.ini et monter ma mémoire, je n’ai plus de souci de ce coté là, j’ai fouillé un peut encore sur lo forum, et encore modifier certain fichier de spip

    la mise en place est assidu, mais je m’accroche, je tente de faire une page d’acceuil pour la boutique

    Répondre à ce message

  • 2

    Les voyelles accentuées (et la lettre qui les accompagne immédiatement) saisies lors de la création du compte par le client ne sont pas prises en compte

    Bonjour,

    Ma boutique Spip-Thelia (qui tournait bien depuis un an) a un gros problème dont je viens de m’apercevoir, problème introduit par une mise à jour que j’ai faite il y a un mois (Spip_2.0.10>2.1.10, Thelia_1.4.3.1>1.5.0 et Spip-Thelia_1.4>1.4.2) :

    Vérification faite, je pense qu’il s’agit d’une régression car le problème se pose aussi sur le site de démo de Spip-Thelia(Spip 2.1.12, Thelia 1.5.1 et Spip-Thelia 1.4.2) : http://plugin-thelia.openstudio.fr/

    De quoi s’agit-il ?

    Les caractères spécifiques de la langue française saisis lors de la création d’un compte du processus de commande(1) ne sont pas pris en compte, AINSI que le caractère qui les suit immédiatement.

    Par exemple la personne qui saisira « Bérangère FÉRIÈRE 14 rue de la Baïsse 93800 ÉPINAY-SUR-SEINE » deviendra pour la boutique « Bange FIE 14 rue de la Base 93800 INAY-SUR-SEINE ».

    La correction de cette erreur par l’intéressé est impossible puisque la page "Modifier mes informations"(2) présente le même dysfonctionnement.

    Chose intéressante, la correction de l’adresse du client fonctionne à partir du backoffice de Thelia (ce qui laisse à penser que le soucis vient du plugin Spip-Thelia), mais comme le backoffice ne permet pas la modification d’adresses des commandes, le problème reste entier pour ces dernières.

    Qu’en pensez-vous ?
    Une solution ?

    Merci d’avance pour vos idées et bonne journée à toutes et à tous

    Marc

    (1) ex : à la page http://plugin-thelia.openstudio.fr/spip.php?page=connexion
    (2) http://plugin-thelia.openstudio.fr/spip.php?page=compte_modifier

    • Bonjour Marc,

      Merci pour ton aide. Je viens de modifier le plugin pour qu’il n’y ait plus par défaut d’encodage en ISO des données envoyées à Thélia puisque désormais Thélia est en UTF8.

      En revanche pour la compatibilité avec les anciennes bases, on peut forcer tout de même la conversion en ISO depuis le panneau de configuration du plugin.

      Arnault

    • Bonjour Arnault,
      Super, ça (re)marche parfaitement.
      Merci d’avoir fait si vite :)
      Bonne journée
      Marc

    Répondre à ce message

  • J’avais un (tout petit) problème avec les blocs dépliables des « Produits associés à l’article » dans la partie privée du plugin spip-thelia [plugin 1.4.3 - SPIP 2.1.11]. Ils ne se repliaient pas. Pour ceux que cela pourrait intéresser, je vous mets les modifications que j’ai apportées et qui ont corrigé cette anomalie.
    Dans le fichier spip_thelia_fonct.php (à la racine du plugin) :
    -  ligne 271 : ajouter $out .= debut_block_depliable (false,« produitsarticle ») ;
    -  ligne 365 : ajouter $out .= debut_block_depliable (false,« produitsrubrique ») ;
    Et le tour est joué ! Un simple petit oubli, j’imagine, dans le portage en SPIP 2.0.

    Petit bonus. Pour faire apparaitre l’icône thelia en haut et à gauche du cadre, il suffit de modifer dans le même fichier :
    -  ligne 270 modifier « ../ »._DIR_PLUGIN_SPIP_THELIA en _DIR_PLUGIN_SPIP_THELIA
    -  ligne 364 modifier « ../ »._DIR_PLUGIN_SPIP_THELIA en _DIR_PLUGIN_SPIP_THELIA
    Attention, l’icone fournie par défaut dans le plugin img_pack/logo_thelia_petit.png est un peu trop grande (32x32). Je vous conseille de la tailler en 24x24 .
    Et encore un grand merci pour Thelia et son plugin SPIP !

    Répondre à ce message

  • 1

    bonjour
    spip 2.1.11 et thelia 1.5.O plug thelia Version : 1.4.2 [52969]

    retours d’erreur

    Erreur SQL 1146
    Table ’db280303273.spip_produits_articles’ doesn’t exist
    SELECT * FROM spip_produits_articles LIMIT 1
    / /
    2 Erreur SQL 1146
    Table ’db280303273.spip_produits_rubriques’ doesn’t exist
    SELECT * FROM spip_produits_rubriques LIMIT 1
    / /
    3 Erreur SQL 1146
    Table ’db280303273.spip_rubriquesthelia_articles’ doesn’t exist
    SELECT * FROM spip_rubriquesthelia_articles LIMIT 1
    / /
    4 Erreur SQL 1146
    Table ’db280303273.spip_rubriquesthelia_rubriques’ doesn’t exist
    SELECT * FROM spip_rubriquesthelia_rubriques LIMIT 1

    il-faut créer les table ?

    • Pourquoi ne pas avoir utilisé la version 1.4.3 du plugin ?? Elle semble fonctionner, avec spip en version 2.1.12 et Thelia en 1.5.1.
      Merci pour les évolutions de ce plugin, fort utile.
      A ce propos, peut-on dire que le développement de Spip-Commerce ou Echoppe Spip est définitivement stoppé ?? C’est bien dommage car c’est toujours plus fastidieux - et plus long - de devoir utiliser deux CMS à la place d’un seul...

    Répondre à ce message

  • 1

    Nous venons de commiter dans Thélia un renommage des fonctions chemin() et _chemin(). Ces modifications sont actuellement dans la version dev et seront intégrées à la prochaine version de Thélia 1.5.1

    http://thelia.svn.sourceforge.net/v... et http://thelia.svn.sourceforge.net/v...

    Ceci limitera les conflits entre les deux logiciels et évitera les étapes laborieuses de modifications de /ecrire/inc/utils.php et /fonctions/hierarchie.php

    • boujour

      ces corrections sont utilisable avant l’installation de thelia ?
      -  >
      « Directorythelia/install/patch/1.5.0.php »

      quand thelia est installer faut il tous reprendre ?
      merci
      fabien

    Répondre à ce message

  • 3

    Ola !

    Les retours d’erreur des formulaires (par exemple THELIA-ERRCONNEX[(err_emailmdp)] dans inc-connexion.html ) n’ont pas l’air de fonctionner avec thelia 1.5 et spip 2.1.11 :(

    Quand je valide le formulaire de création de compte (avec des champs laissés vides) j’arrive bien sur la page formulerr mais j’ai ceci qui s’affiche : Civilité #RAISON[obligatoire]

    Quelqu’un a déjà rencontré ce problème ?

    • Un peu plus d’infos... On dirait que le paramètre &errform=1 n’est pas transmis dans l’url.

      Après avoir examiné le site avec Firebug, une redirection est faite sur / ?fond=formulerr&errform=1 qui redirige vers ?page=formulerr

      D’où pourrait bien venir ce ?fond= ??

    • Ce qui me rassure c’est que le problème est visible sur la démo du plugin...

      J’ai trouvé comment le résoudre mais il faut modifier le coeur de THELIA (1.5) :(

      Dans fonctions/action.php ligne 472 remplacer :

      redirige($urlsite->valeur ."/?fond=formulerr&errform=1");

      par :

      redirige($urlsite->valeur ."/?page=formulerr?errform=1");

      Dans le même fichier, ligne 113 remplacer :

      redirige($urlsite->valeur ."/?fond=connexion&errconnex=1");

      par :

      redirige($urlsite->valeur ."/?page=connexion&errconnex=1");
    • En fait on peut régler ça avec des règles rewrite sans modifier les fichiers THELIA :)

      RewriteCond %{QUERY_STRING} ^fond=(.*)$
      RewriteRule ^(.*)$ spip.php?page=%1

      C’est commité dans le plugin.

    Répondre à ce message

  • Bonjour à vous tous,
    je veux mettre une boutique en ligne en place et j’aimerai savoir pour le paiement en ligne ca se passe comment ? je veux dire avec les cartes bancaires. Merci de votre réponse, j’ai besoin de savoir avant de me lancer

    Répondre à ce message

  • 1

    bonjour

    test avec spip 2.1.10 et thelia 1.5 (en local mamp)

    ( partie public ) j’ai une page blanche avec :

    Erreur de syntaxe : une ou plusieurs boucles n’ont pas été fermées : /T_rubriquesthelia

    si je supprimes spip_thelia_fonct.php du plugin-thelia plus de page blanche .....

    pour info

    • l’ erreur viens de moi

      une boucle :

      <T_rubriquesthelia>
          <THELIA_rubriquesthelia type="RUBRIQUE" parent="0">
          <a href="#URL_PAGE{rubrique_thelia,id_rubrique_thelia=THELIA-ID}" style="font-size: 11px;line-height: 18px; color: white;">THELIA-TITRE</a>
           </THELIA_rubriquesthelia>
           </T_rubriquesthelia>

      ( j’avais oubli une ligne =)

      <//T_rubriquesthelia>

      mille excuses et merci pour ce plugin
      tous roule fabien

    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 :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

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