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

  • bonsoir à tous,
    j’ai un site sous spip 2.18 qui fonctionne. Après avoir essayé d’installer THELIA 1.4.3.1 j’obtiens ce message d’erreur :

    Fatal error : Call to undefined function : chemin_image() in /mnt/132/sdd/e/c/cuirdeluxe/ecrire/inc/presentation.php on line 547

    quelqu’un a t il déjà rencontré ce problème ?

    bonne soirée

    Répondre à ce message

  • 1

    Bonjour à tous,
    j’ai une petite question qui, je penses, à déjà du être posée, mais sur le coup google n’a pas été mon ami (rire !)
    normalement, dans thélia, nous avons la possibilité d’exécuter des scripts php dans les squelettes en ajoutant $parsephp=1 sur les pages .php associées mais dans la cas spip+thélia avec le plugin les scripts ne sont pas exécutés.
    script est un bien grand mot car je veux simplement placer des ’if() else’ pour faire afficher ou non des parties de la page en fonction de certains critères comme par exemple :

    <?php if("THELIA-PANIER_NBART"<3):  ?>
    	j'affiche mon panier d'un vertaine manière
    <?php else:  ?>
    	j'affiche mon panier différemment
    <?php  endif;  ?>

    j’ai essayer d’ajouter $parsephp=1 dans le switch de la fonction spip_thelia_appeler_moteur_thelia (fichier spip_thelia_fonct.php du plugin lignes 80 à 95) mais cela ne fonctionne pas !

    merci d’avance pour vos réponses

    Xavier

    • ayant trouvé la solution, je me répond à moi même !
      il faut tout simplement utiliser les filtres thélia du plugin filtrecomparaison qui est à cette adresse :
      http://contrib.thelia.fr/spip.php?article114

      pour reprendre mon exemple ci-dessus :

      THELIA-FILTRE_infsinon(THELIA-PANIER_NBART||3||
              j'affiche mon panier d'un certaine manière
      ||
              j'affiche mon panier différemment
      )

      voilà le travail !!!!!!!

      Xavier

    Répondre à ce message

  • j’ai un souci avec thelia 1.4.3.1 et SPIP 2.1.2

    quand je suis sur la boutique et que je souhaite ajouter un produit au panier

    j’ai le message suivant :

    Fatal error : Call to a member function ajouter() on a non-object in /homepages/29/d321883665/htdocs/spip/fonctions/action.php on line 54

    si je supprime les cookies (PHPSESSID) et relance la page j’arrive sur panier avec le produit

    que faire merci fabien

    Répondre à ce message

  • 1

    Bonjour !
    Une petite requête urgente.

    J’ai mis à jour SPIP, 2.1.8, j’ai commenté chemin dans utils.php j’ai maintenant une page blanche alors que ça fonctionnait avant.

    Comment faire svp ?

    Thelia est à jour aussi.

    Répondre à ce message

  • 1

    Bonjour,

    Avec spip 2.1.6 et le plugin thélia Version : 1.4 [43057] et thélia Version : 1.4 [43057]

    J’ai un problème d’encodage. Si dans l’espace, interne tout se s’affiche correctement, dans l’espace publique lest titre des produits thélia ne s’affichen pas en utf-8.

    Je change donc le mode d’affichage dans la config en UTF-8, alors l’interface interne toujours bon,

    par contre sur le site publique ou il y a présence de boucles thélia, les conteus thélia sont affichés correctements, mais plus les contenus spip.

    Quelqu’un à une remède

    Merci

    Rainer

    Répondre à ce message

  • Bonjour et bons vœux 2011,

    Quand est il de la modification de roadster31 sur le forum : http://forum.thelia.fr/viewtopic.php?pid=34961 (dernière page), est-elle dans le dernier ZIP ?

    Merci encore à tous pour ce travail.
    AlainF

    Répondre à ce message

  • 6
    Alain BOURDEAU

    Bonjour,
    Je viens de faire la mise à jour du plugin THELIA et la fenêtre : associer un produit à l’article ne me présente plus que 2 lignes la première avec un carré de sélection et le titre #TITRE et la deuxième avec uniquement #TITRE.

    C’est bien gênant pour les mises à jour.

    Y aurai-t-il une incompatibilité avec le plugin de thélia : parseur amélioré ?
    sous SPIP 2.1.0 [15608] THELIA 1.4.3.1
    Que faire ?
    Merci bien.

    • Alain BOURDEAU

      Y a bien un problème avec ce plugin : parseur amélioré de thélia.
      Je poste sur le forum idoine.
      A plus

    • Je ne sais pas si c’est le même problème, chez moi avec un sip 2.1.6 et le plugin thélia Version : 1.4 [43057] et thélia Version : 1.4 [43057]

      je n’obtiens pas la liste des produits articles.

      l’onglet Produit associes à l’articles s’affiche bien mais pas de menu de séléction

    • J’ai essayé avec les modifications proposé sur le forum de thélia (http://forum.thelia.fr/viewtopic.php?pid=34466#p34466)

       Le problème est du à un oubli dans le plugin spip-thelia, et plus précisément dans le fichier plugins/plugin-thelia/spip_thelia_fonct.php. En effet, si dans la fonction spip_thelia_appeler_moteur_thelia() $res est déclarée globale, ce n'est pas le cas pour les fonctions spip_thelia_formulaire_article et spip_thelia_formulaire_rubrique.
      
      $res n'est donc pas propagé aux plugins Thelia, et en particulier au parseur.
      
      La solution: remplacer les deux occurences de:
      
         $res = recuperer_fond(...
      
      par:
      
         global $res;
         $res = recuperer_fond(...

      , mais cela ne fonctionne pas.

      Est-ce quelq’un a rencontré le problème ou/et trouvé une solution ?

      Merci

      Rainer

    • Bonjour,
      Sur le site de spip, il est noté un certain nombre de mises à jour de plugin à faire lors de la migration vers 2.1.6. De mémoire, CFG, BONUX (je ne retrouve pas la page que j’avais lue sur ce point dans le site de SPIP). Par défaut, tu peux tous les mettre à jours c’est du travail, mais au moins c’est hmogène.
      Alain

    • Voir sur spip-contrib : http://www.spip-contrib.net/SPIP-2-1-6
      C’est sur cette page que c’est indiqué.
      alain

    • Bonjour,

      Suite à ton message j’ai encore actualisé tous les plugins, les désinstallé, puis réinstallé un par un et là j’ai trouvé le coupable , le plugin Bouquinerie causait le problème.

      Merci

      Rainer

    Répondre à ce message

  • 1

    Boucle THELIA dans article SPIP

    Si je mets une boucle THELIA dans un article SPIP, toutes les chaines « THELIA » sont remplacées par « dummy ».
    Ainsi, si je mets :

    <THELIA_LIV1 type="PRODUIT">
    THELIA-TITRE
    </THELIA_LIV1>

    Dans le code final html, kj’obtiens :

    <dummy_liv1 type="PRODUIT">
    dummy-TITRE
    </dummy_liv1>

    Est-ce normal ?

    Si oui, est-il possible de désactiver cette fonction ?

    Répondre à ce message

  • 1

    Bonjour, j’ai plusieurs problèmes avec Thelia SPIP

    SPIP 2.1.2
    Thelia V1.4.3.1

    Lors d’une installation de base en ayant suivant les recommandations ci dessus, je me retrouve confronté à plusieurs problèmes et un en particulier.

    Lorsque j’appel cette page : spip.php ?page=adresse après avoir valider mes coordonnés et mon panier , je me retrouve donc au choix de la livraison, (spip.php ?page=adresse) je clique sur valider, et là 404, l’url suivante commande.php ?thelia_action=transport&id=2 ne fonctionne pas

    The requested URL /spip.php was not found on this server.

    Alors est ce que j’ai mal paramétrer quelque chose ? j’ai retenter une install mais cette fois ci ce n’est plus la même erreur, j’arrive à aller jusqu’au paiment, mais quand je fais continuer, paf erreur de nouveau cheque.php introuvable.

    Je désespère ..

    • Bonjour,
      J’ai trouvé la solution.

      J’avais juste un problème de path dans la config thelia, visiblement, il avait du mal avec un path contenant des « __ » j’ai édité , j’ai remis mon path et ré enregistré ça fonctionne, et j’ai aussi commenté le rewrite base et tout est ok maintenant .

      Merci bien.

    Répondre à ce message

  • 1

    bonjour
    j’ai vu sur google la même question que je m’apprête à poser sur un post daté du 26 juin 2007 que je n’ai pas retrouvé.

    au risque que ma question paraisse répétitive comment met-on en commentaire ces lignes

    /*function chemin($file, $dirname='', $include=false){
        return find_in_path ($file, $dirname, $include);
       }
    */

    dans les lignes 670-671

    creer_chemin(); // forcer un recalcul du chemin et la mise a jour de path_sig
    	}

    ok je pige rien encore au php. j’ai vu qu’il y avait souvent des lignes entre parenthèse alors j’ai fait :

    creer_chemin(/*function chemin($file, $dirname='', $include=false){
        return find_in_path ($file, $dirname, $include);
       }
    */); // forcer un recalcul du chemin et la mise a jour de path_sig
    	}

    mais apparemment c’est pas ça. bref, en 2 clics pouvez-vous m’éclairer ?

    merci d’avance !

    • en deux clic :
      apparemment la fonction a changé de ligne, elle n’est plus en ligne 671 mais en ligne 648.
      et tu n’as pas vraiment compris ce qu’il fallait faire :

      il faut commenter
      function chemin($file, $dirname=’’, $include=false)
      return find_in_path ($file, $dirname, $include) ;

      ce qui donne

      /*function chemin($file, $dirname=’’, $include=false)
      return find_in_path ($file, $dirname, $include) ;

      */

    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