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

  • Olivier CARETTE

    Bonjour,
    Ceplugin m’interesse énormément.
    Malheureusement en installant spip et en me connectant tout fonctionne.
    Malheureusement lorsque je me délog et cherche à me reconnecter dans le backend de spip, j’ai un problème de cookie alors que tout fonctionne pour les cookies dans la config de firefox (même pb avec IE). Je n’ai donc plus accès au backend.
    Tout fonctionne en frontend.
    Quelqu’un a t il une idée ?
    Olivier

    version spip = 2.1.1
    dernière version de thélia

    Répondre à ce message

  • Renée Picard

    Bonjour
    Sur le sitehttp://www.paniersdici.com environ 1 fois sur 5 commandes, le processus d’achat de produit ne se déroule pas dans l’ordre.
    Après l’étape transport, la page suivant est un retour à la page connexion au lieu d’avoir le récapitulatif de la commande. 4 fois sur 5 (environ) le processus est correct jusqu’à la fin.

    Dans les 2 cas, le courriel de confirmation est bien envoyé.

    Je ne sais pas quoi faire et j’ai besoin d’aide.
    MERCI

    Répondre à ce message

  • salut

    j’ai finalement cédé l’affaire de la fusion thelia-spip car à chaque fois je corrige un souci, un autre se génère...pour un site de vente ça ne serait pas acceptable !

    je vois que ce plugin n’est pas encore au point, pour le définir comme « stable » car l’installation demande des 10ene de modifications
    j’ai finalement monté mon site avec « Thelia » tout court, (même si ça manque de templates)

    merci pour cette contribution, espérant une meilleur mis à jour du plugin

    Répondre à ce message

  • Bonjour à tous,

    J’ai installé en local le plugins thélia (1.4) avec spip (2.1.0) et thélia (1.3.4).
    L’ensemble de l’association fonctionne. Toutefois dans l’espace privé, lorsque je souhaite modifier un article, j’ai une erreur de squelette relatif à l’association d’article avec des produits thélia. L’image ci-dessous résume mon problème.

    Je ne sais pas quelle est la source du problème.

    Répondre à ce message

  • J’ai un tout petit soucis, une plutôt une petite lacune : Comment fait-on pour « EXPOSER » la rubrique Thelia courante ?

    Répondre à ce message

  • Bonjour

    « Veuillez renommer votre répertoire admin avant de vous connecter »

    C’est le message que je reçois dans l’interface thelia, quelqu’un pourrait me dire la suite de la procédure ? Sachant que je n’est pas lancer l’installation de thelia
    Merci d’avance

    Répondre à ce message

  • Problème récurrent d'encodage des caractères latins :
    
    Les solutions données :
    
    - écrire "include_spip("inc/charsets") ;" au début de spip_thelia_fonc.php (juste en dessous de <?php).
    
    - commenter les lignes 71, 139 et 152 du fichier  spip_thelia_fonct.php
    71 // $_REQUEST[$clef]=unicode2charset(charset2unicode($valeur, ’utf-8’),’iso-8859-1’) ;
    139 // $res = unicode2charset(charset2unicode($res, ’utf-8’),’iso-8859-1’) ;
    152 // $texte = unicode2charset(charset2unicode($texte, ’iso-8859-1’),’utf-8’) ;
    
    - écrire dans cnx.class.php "mysql_query("SET CHARACTER SET ’latin1’") ;" avant le return self ::$db_handle ;
    
    Résultats :
    
    La dernière solution donne quelque chose quelques temps et ensuite le problème revient de façon incompréhensible.
    
    Versions : spip 2.0 - thelia 1.4.3.1 - plugin spip-thelia 1.4
    
    Quelqu'un aurait-il trouvé une solution durable ?

    Répondre à ce message

  • 1

    Bonjour,

    Tout d’abord, merci pour ce magnifique plugin sans lequel la conception d’une boutique à partir d’un site Spip n’aurait pas été aussi aisée :)

    Juste une question sur laquelle je butte : J’aimerai faire une redirection des pages plugin Thelia vers les pages Spip pré-existantes qui présentent déjà très bien les produits à vendre (et auquelles j’ai ajouté le bouton ajout de panier).

    J’ai donc créé dans ma base Thelia une caractéristique supplémentaire pour les produits (correspondant aux n° d’article Spip correspondants), puis j’ai remplacé le contenu de ./squelette/produit.html par

    <THELIA_PROD type="PRODUIT" ref="#ENV{ref}"> 
    <THELIA_caracteristique type="CARACTERISTIQUE" produit="THELIA-ID">
    <THELIA_caracval type="CARACVAL" produit="THELIA-PRODUIT" caracteristique="THELIA-ID">
    
    #SET{toto,THELIA-VALEUR}
    <?php
    $k="#GET{toto}";
    $l="./spip.php?article";
    header("location:$l$k");
    ?>
    </THELIA_caracval>
    </THELIA_caracteristique>
    </THELIA_PROD>

    Or lorsque j’ouvre une page produit, j’obtiens la page d’accueil du site avec pour URL http://192.200.1.6/spip.php?articleTHELIA-VALEUR

    Bref, l’intitulé de la variable THELIA-VALEUR, plutôt que sa valeur... Pourtant, si je remplace header(« location :$l$k ») ; par printf($l.$k) ;, j’obtiens bien une page contenant l’URL attendue (./spip.php ?article1816).

    Là, je sèche. Merci d’avance pour celles/ceux qui auront une idée :)

    • J’ai une solution (en fait je contourne le problème de la redirection pour arriver au résultat espéré). Détail au cas où :

      J’ai placé dans /squelettes/inc/ une copie de inc-panier dans laquelle j’ai modifié le calcul de l’URL de la fiche produit en remplaçant :

      [(#CONFIG{spip_thelia/liens_produits_panier_spip_thelia}|=={"oui"}|oui)<a href="#URL_PAGE{produit,ref=THELIA-REF}">]
      
      THELIA-TITRE

      Par :

      <THELIA_caracteristique type="CARACTERISTIQUE" produit="THELIA-ID">
      <THELIA_caracval type="CARACVAL" produit="THELIA-PRODUIT" caracteristique="THELIA-ID">
      
      #SET{toto,THELIA-VALEUR}
      
      <?php
      $k="#GET{toto}";
      printf("<a href=./spip.php?article".$k.">");
      ?>
      
      </THELIA_caracval>
      </THELIA_caracteristique>
      
      THELIA-TITRE

      Bref, plus besoin de redirection puisque les URL indiquées dans le panier pointent désormais les articles Spip correspondants aux produits.

      Merci encore pour ce super Plugin :)

    Répondre à ce message

  • 1

    Bonjour j’ai installé Thelia ainsi que le plugin Thelia pour SPIP mais j’ai deux erreurs :

    erreur : la fonction chemin() dans ecrire/inc/utils.php doit être mise en commentaire !

    et quand j’essaye d’aller sur Thelia dans Edition j’ai ce message :

    The requested URL /admin/ was not found on this server. car apparament le dossier admin a été renommé en admin.....

    Merci d’avance pour vos pistes !

    • Bonjour,

      Bonjour j’ai installé Thelia ainsi que le plugin Thelia pour SPIP mais j’ai deux erreurs :
      erreur : la fonction chemin() dans ecrire/inc/utils.php doit être mise en commentaire !

      Tu trouveras la réponse dans la présentation de l’installation ci-dessus (variante Spip 2.0 de l’étape 2).

      et quand j’essaye d’aller sur Thelia dans Edition j’ai ce message :
      The requested URL /admin/ was not found on this server. car apparament le dossier admin a été renommé en admin.....
      Merci d’avance pour vos pistes !

      Éditer le fichier « spip_thelia_mes_options.php » (qui se trouve dans ./plugins/auto/plugin-thelia). La mention « admin » de la ligne
      define(’_THELIA_ADMIN’,’admin’) ;
      doit être remplacé par le nom du répertoire d’administration de Thelia (qui t’a été indiqué lors de l’installation). Si tu ne sais plus jettes un œil à la racine de de ton site. ex :
      define(’_THELIA_ADMIN’,’admin_Ff3FD5Zlk7f’) ;

    Répondre à ce message

  • Bonjour dans la derniere version de SPIP 2.1, le plugin a l’air de fonctionner mais le gestionnaire de plugin indique en permanence l’echec de son installation. C’est assez deroutant.

    J’ai joins une illustration

    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