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

  • 11
    alexandre

    La version 1.5 de thelia est sortie avec gestion de l’utf-8 et corrections diverses de bugs.

    Quelqu’un a t-il testé ?

    • alexandre

      Et bien du coup j’ai testé ^^.

      Doublon avec la fonction _chemin().
      Je l’ai renommé dans fonctions/hierarchie.php en _chemin_thelia() et modifié dans le même fichier les appels à cette même fonctions :

      ligne 47 : return _chemin_thelia($id, ’Rubrique’, $lang) ;
      ligne 53 : return _chemin_thelia($id, ’Dossier’, $lang) ;

      Quand au plugin j’ai supprimé toutes les conversions d’encodages (dans spip_thelia_fonct.php à la racine du plugin) du type :

      $res = unicode2charset(charset2unicode($res, 'utf-8'),'iso-8859-1');

      à remplacer dans ce cas par :

      //$res = unicode2charset(charset2unicode($res, 'utf-8'),'iso-8859-1');

    • Bonjour,
      Merci bien pour ta contribution qui débloque la page blanche de spip.
      Je mets ci-dessous le fichier hierarchie.php car j’ai du changer d’autres lignes pour que ça marche sous spip.
      Il me reste à remettre en marche dans thélia la présentation des produits.

      <?php
      
      // 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_thelia($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);
      }
      
      
      // hiérarchie des rubriques
      function arbreBoucle($depart, $profondeur=0, $i=0){
      	$rec="";
      	$i++;
      	if($i == $profondeur && $profondeur != 0) return;
      	$trubrique = new Rubrique();
      
      	$query = "select * from $trubrique->table where parent=\"$depart\"";
      	$resul = CacheBase::getCache()->mysql_query($query, $trubrique->link);
      
      	if($resul == "" || count($resul) == 0) return "";
      	foreach($resul as $row){
      		$rec .=  $row->id . ",";
      		$rec .= arbreBoucle($row->id, $profondeur,$i);
      
      	}
      
      	return $rec;
      }
      
      // changement de rubrique
         function arbreOption($depart, $niveau, $prubrique, $aenfant = 0, $lang=1){
      
             $rec="";
             $espace="";
      
             $niveau++;
             $trubrique = new Rubrique();
             $trubriquedesc = new Rubriquedesc();
      
             $query = "select * from $trubrique->table where parent=\"$depart\"";
             $resul = CacheBase::getCache()->mysql_query($query, $trubrique->link);
      
             for($i=0; $i<$niveau; $i++) $espace .="&nbsp;&nbsp;&nbsp;";
      
      		if($resul == "" || count($resul) == 0) return "";
             foreach($resul as $row){
                 $trubriquedesc->charger($row->id, $lang);
                 $trubrique->charger($trubriquedesc->rubrique);
                 if($prubrique == $trubriquedesc->rubrique) $selected="selected"; else $selected="";
                 if($aenfant){
                     if(!$trubrique->aenfant()){
                         $rec .= "<option value=\"$row->id\" $selected>" . $espace . $trubriquedesc->titre . "</option>";
                     }
                 }
                 else{
                     $rec .= "<option value=\"$row->id\" $selected>" . $espace . $trubriquedesc->titre . "</option>";
                 }
      
                 $rec .= arbreOption($row->id, $niveau, $prubrique, $aenfant, $lang);
      
             }
      
      
             return $rec;
         }
      
      	function arbreOptionRub($depart, $niveau, $prubrique, $nbprod = 0, $ok = 1, $lang=1){
      
             $rec="";
             $espace="";
      
             $niveau++;
             $trubrique = new Rubrique();
             $trubriquedesc = new Rubriquedesc();
      
             $query = "select * from $trubrique->table where parent=\"$depart\"";
             $resul = CacheBase::getCache()->mysql_query($query, $trubrique->link);
      
             for($i=0; $i<$niveau; $i++) $espace .="&nbsp;&nbsp;&nbsp;";
      
      		if($resul == "" || count($resul) == 0) return "";
             foreach($resul as $row){
                 $trubriquedesc->charger($row->id, $lang);
                 $trubrique->charger($trubriquedesc->rubrique);
                 $courante = new Rubrique();
                 $courante->charger($prubrique);
                 if($courante->parent == $trubriquedesc->rubrique) $selected="selected"; else $selected="";
      
      
      		if($ok == 0 || ($row->id == $prubrique && $ok != -1))
      			$disabled = "disabled=\"disabled\"";
      		else
      			$disabled = "";
      
      
                if(($nbprod && $trubrique->nbprod()) || !$nbprod)
                      $rec .= "<option value=\"$row->id\" $disabled $selected>" . $espace . $trubriquedesc->titre . "</option>";
      
      		if(($prubrique == $row->id && $ok != -1) || $ok == 0)
                 $rec .= arbreOptionRub($row->id, $niveau, $prubrique, $nbprod, 0, $lang);
      		else
      		   $rec .= arbreOptionRub($row->id, $niveau, $prubrique, $nbprod, 1, $lang);
             }
      
      
             return $rec;
         }
      
      
      // hiérarchie des dossiers
      function arbreBoucle_dos($depart, $profondeur=0, $i=0){
      
      	$rec="";
      
      	$i++;
      	if($i == $profondeur && $profondeur != 0) return;
      	$tdossier = new Dossier();
      
      	$query = "select * from $tdossier->table where parent=\"$depart\"";
      	$resul = CacheBase::getCache()->mysql_query($query, $tdossier->link);
      
      	if($resul == "" || count($resul) == 0) return "";
      	foreach($resul as $row){
      		$rec .= $row->id . ",";
      		$rec .= arbreBoucle_dos($row->id, $profondeur,$i);
      
      	}
      
      	return $rec;
      }
      
      // changement de dossier
      function arbreOption_dos($depart, $niveau, $pdossier, $dossier, $ok=1, $lang=1){
      	$niveau++;
      	$tdossier = new Dossier();
      	$tdossierdesc = new Dossierdesc();
      
      	$query = "select * from $tdossier->table where parent=\"$depart\"";
      	$resul = CacheBase::getCache()->mysql_query($query, $tdossier->link);
      
      	for($i=0; $i<$niveau; $i++) $espace .="&nbsp;&nbsp;&nbsp;";
      
      	if($resul == "" || count($resul) == 0) return "";
      	foreach($resul as $row){
      		$tdossierdesc->charger($row->id, $lang);
      		if($pdossier == $tdossierdesc->dossier) $selected="selected=\"selected\""; else $selected="";
      
      		if($ok == 0 || ($row->id == $dossier && $ok != -1))
      			$disabled = "disabled=\"disabled\"";
      		else
      			$disabled = "";
      			
      		$rec .= "<option value=\"$row->id\" $disabled $selected>" . $espace . $tdossierdesc->titre . "</option>";
      
      		if(($dossier == $row->id && $ok != -1) || $ok == 0)
      			$rec .= arbreOption_dos($row->id, $niveau, $pdossier, $dossier, 0, $lang);
      		else
      			$rec .= arbreOption_dos($row->id, $niveau, $pdossier, $dossier, 1, $lang);
      
      	}
      
      
      	return $rec;
      }
      
      
      ?>

      A suivre

    • Bonjour Alain,

      J’ai installé le site démo en SPIP 2.1 / Thélia 1.5.

      Je viens de mettre à jour la documentation au sujet de la fonction hierarchie(). En revanche, il me semble que remplacer _chemin() par _chemin_thelia() suffit non ?

      Quelles autres modifications vous ont été nécessaires ?

    • Bonjour Arnault,

      attention dans la ligne 33 du fichier que j’ai présenté, il faut bien écrire

      // renvoie le chemin pour aller à une rubrique donnée
      function chemin_thelia($id, $lang=1){
      	return _chemin_thelia($id, 'Rubrique', $lang);
      }

      La fonction d’envoi de liens de téléchargement pour les produits virtuel ne marche toujours pas.
      Je passe par une autre installation autonome de THELIA pour envoyer les liens de service des abonnements.
      Amicalement, Alain

    • Bonjour,

      Je viens de migrer vers Thelia 1.5, la version courante du plugin SPIP + SPIP 2.1.0.

      J’ai modifié les lignes indiquées mais je rencontre 2 problèmes majeurs à ce stade :

      -  impossible de parvenir à l’espace privé de SPIP... ça me renvoi à la racine du site. Le problème semble être le même sur le site de test... http://plugin-thelia.openstudio.fr/ semble renvoyer à la racine du site.
      -  les messages envoyés par Thelia par email sont systématiquement dans la langue 1, du coup j’ai réussi, tant bien que mal, à traduire les pages mais les messages emails restent dans la même langue...

      Si vous avez une idée... :)

    • A priori c’est la fonction spip_thelia_appeler_moteur_thelia() qui, comme son nom l’indique, appelle le moteur de Thelia. Je n’ai pas encore suffisamment cherché mais quelque chose à ce niveau fait revenir à la racine du site lorsqu’on veut entrer dans l’espace privé SPIP.

      Sinon pour le problème des messages envoyés uniquement dans la langue 1 j’ai adapté les fichiers action.php, client_creer.php, ajoutcli.php lors des chargements de messages « $msgdesc->charger($msg->id, $lang) ; » ou « $messagedesc->charger($message->id, $lang) ; ». J’ai fais un truc vraiment pas propre à base de nouvelle variable de session de langue + un tableau de correspondance mais je m’en sors.

      En revanche l’identification... pour le moment je bloque.

      Bon c’est l’été alors je devrais être patient l’ennui c’est que ce projet doit être rendu fin juillet... Bon.

    • Alain BOURDEAU

      Bonjour,
      la compatibilité entre spip 2.1.0 et thelia 1.5 reste à ce jour problématique. La solution que je cherche à faire fonctionner consiste à avoir thelia dans un dossier spécifique et non à la racine de spip comme préconisé pour le plugin spip-thelia.
      Cela demande de ’travailler’ le fichier .htaccess de spip pour orienter les requêtes typiques thelia directement sur le dossier de thélia sans passer par le plugin. Il faut également ’bricoler’ le plugin, mais je n’ai pas encore toutes les informations pour cette partie que je sous traite.

      Voila si sa peut t’aider.
      Alain

    • ... en tout cas ça me fait espérer :) Merci beaucoup de ta réponse. Si je trouve une solution, même sâle, je vous tiens au courant.

    • Dans son message du 1er juillet, Alain écrit

      Bonjour Arnault,
      attention dans la ligne 33 du fichier que j’ai présenté, il faut bien écrire

           // renvoie le chemin pour aller à une rubrique donnée
               function chemin_thelia($id, $lang=1){
               return _chemin_thelia($id, 'Rubrique', $lang);
               }

      Or, dans l’installation telle que présentée dans l’article, la fin du code est celle-ci :

      // renvoie le chemin pour aller à une rubrique donnée
      function chemin($id, $lang=1){
      	return _chemin_thelia($id, 'Rubrique', $lang);
      }

      Quelle est la bonne version ? (test des deux en cours, pas de différence notée).

    • Je réponds direct, puisque je viens de constater un message d’erreur avec la 1re version dans l’accès-interface privée de Thélia au catalogue :

      Fatal error : Call to undefined function chemin() in /XXX/www/admin-***/parcourir.php on line 147

      ... qui disparait si on reprend le code comme il est (bien) indiqué dans la partie « installation » de cet article.

    • Installation (en test pour l’instant) de Spip 2.1 et Thelia 1.5.1-RC1.
      Tout fonctionne sauf le login à l’espace privé.

      Pour accéder à l’espace privé, il faut modifier le lien et utiliser .../spip.php ?page=login en supprimant le paramètre « url=... »

      ProduitVirtuel2 : je ne comprend pas sa logique, je vais peut-être partir sur un spécif (surtout pour gérer plus finement les téléchargements qui ne sont pas fait via le plugin).

    Répondre à ce message

  • Pour que ZPIP fonctionne correctement, il faut modifier plugin.xml en supprimant (ou commentant) la ligne :

    <chemin dir="squelettes_spip2.0/" type="public" />

    sinon, les squelettes spip2.0 sont utilisés, le résultat est moche (non « zpipien »).

    Répondre à ce message

  • 2

    Bonjour,

    J’ai installé Thelia 1.5 avec un Spip 2.1.10

    J’ai suivi toutes les recommandations pour le plugin et cela fonctionne à peu près bien sur la partie publique mais je n’ai plus moyen d’accéder à mon interface privée Spip :

    messages d’erreur suivants :

    Notice : Undefined offset : 0 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 1 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 2 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 3 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 4 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 5 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 6 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 7 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 8 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 9 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 10 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 11 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 12 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 13 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 14 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 0 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 1 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 2 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 3 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 4 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 5 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 6 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 7 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 8 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 9 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 10 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 11 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 12 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 13 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined offset : 14 in /homez.46/editions1/www/ecrire/auth/sha256.inc.php on line 213

    Notice : Undefined index : message_ok in /homez.46/editions1/www/plugins/auto/plugin-thelia/formulaires/login.php on line 230

    Notice : Undefined index : vars in /homez.46/editions1/www/ecrire/public/composer.php(49) : eval()’d code on line 83

    Notice : Undefined index : filtre_compacte_head in /homez.46/editions1/www/ecrire/inc/filtres.php on line 43

    Notice : Undefined index : filtre_compacte_head_dist in /homez.46/editions1/www/ecrire/inc/filtres.php on line 43

    Notice : Undefined index : compacte_head in /homez.46/editions1/www/ecrire/inc/filtres.php on line 43

    et ceci dans la fenêtre d’identification :
    Notice : Undefined index : message_ok in /homez.46/editions1/www/plugins/auto/plugin-thelia/formulaires/login.php on line 230

    Notice : Undefined index : redirect in /homez.46/editions1/www/plugins/auto/plugin-thelia/formulaires/login.php on line 66

    Une piste ?

    • Même problème.
      Il semble y avoir un mélange entre SPIP et THELIA sur la connexion dans l’espace privé.
      J’ai activé toutes les options de partage entre les 2 logiciels.

    • La solution est de modifier auth/sha256.inc.php et d’ajouter en début de fichier :

      error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED) ;

      Je n’ai pas compris pourquoi mais ça marche.
      (info trouvée sur http://forum.thelia.net/viewtopic.php?id=6640)

    Répondre à ce message

  • J’ai installé les dernières version spip 2.1 et thelia 1.5 ainsi que le plugin kivabien.

    je suis en test, quand je crée une rubrique, j’ai un message en dessous de « PRODUITS ET RUBRIQUES THELIA ASSOCIÉS À LA RUBRIQUE SPIP » et avant la liste des produits

    Warning : Cannot modify header information - headers already sent by (output started at /d2/APACHE/www/LLDA/ecrire/exec/naviguer.php:59) in /d2/APACHE/www/LLDA/fonctions/moteur.php on line 28

    Répondre à ce message

  • Le fichier facture.php situé dans client/pdf ne permet pas, sauf erreur, de trouver le bon chemin puisque l’accès de l’include renvoie vers « admin » et non le nouveau nom du répertoire admin (qu’on nous demande de modifier au moment du paramétrage du plugin-thelia).

    Est-ce que je me trompe ? Se peut-il que cette manip soit à l’origine d’autres problèmes ?

    <?php
    
    include_once("../../classes/Navigation.class.php");
    include("../../classes/Administrateur.class.php");
    
    session_start();
    
    $commande = new Commande();
    $commande->charger_ref($_GET['ref']);
    
    include("../../admin/facture.php");
    
    ?>

    Répondre à ce message

  • 2
    florent

    Bonjour,

    J’ai installé le plugin thélia avec succès mais je ne sais pas à quel endroit exactement il faut modifier les balises de style #TITRE ou #CHAPO par exemple. Quels fichiers exactement faut-il modifier pour que cela fonctionne ?

    Merci par avance pour votre aide

    • piroufeu

      C’est dans les squelettes (par exemple rubrique.html), mais dans ceux fournis avec le plugin c’est déjà écrit correctement, il suffit de les adapter aux besoins.

    • florent

      ok merci pour ta réponse

    Répondre à ce message

  • florent

    Bonjour,

    Est-ce que quelqu’un saurait pourquoi le menu déroulant ne s’affiche pas lorsqu’on utilise le squelette median avec le plugin thelia ? Y-a-t’il une incompatibilité ?

    Merci par avance pour votre aide.

    Répondre à ce message

  • piroufeu

    Bonjour,

    je test en local avec les dernières versions et voici mes questions pour le côté client.

    1-A la création d’un client, on est sur l’étape 2 d’une commande, vous ne trouvez pas ça bizarre ? Il faudrait faire un nouveau squelette, mais il y a tellement de choses à faire entre spip, le plugin et thelia, que je ne sait pas si je saurais faire sans m’emmêler les pinceaux. Mais si vous pouvez m’indiquer quels fichiers faire, j’essayerais.

    2-Le plus embêtant : en cas d’erreur de mot de passe, je n’ai pas de message d’erreur.

    Et enfin, je n’avais pas de numéro et date de facture, ni visualiser la facture sur le détail des commandes, il faut remplacer dans le fichier inc-commande_detail en haut et en bas ref=« THELIA-COMMANDE_REF » par ref=« THELIA-REF » et ça marche.

    Merci.
    piroufeu

    Répondre à ce message

  • Salut, je suis sous SPIP 2.1.0 et 1.4.4 Thelia.
    Quand je le tester je reçois une erreur sur commande.php, il tente de rediriger tant de fois, puis-je obtenir cette erreur : « Erreur 310 (net: : ERR_TOO_MANY_REDIRECTS) : Il y avait trop de redirections. »

    Puis-je commenter la ligne inc / inc-commande.html dans commande.html fichier et il charge, mais il ne montre rien (juste en-tête et ainsi de suite), donc je ne peux pas aller plus loin. Je ne peux pas détecter l’erreur sur le fichier inc / inc-commande.html

    J’ai coincé ici, quelqu’un ici pourrait, s’il vous plaît, aidez-moi ?

    Merci d’avance.

    Répondre à ce message

  • Passage de SPIP 1.9.10 à SPIP 2.10.0 et THELIA 1.4.x à THELIA 1.5.0

    Après moult essais et expérimentations, je pense avoir trouvé une combinaison qui a au moins le mérite de bien fonctionner et de rendre l’exploitation conjointe des ces deux CMS plus souple.

    La cinématique est la suivante.
    1er Avoir un site SPIP 2.10 (utf-8) en place et déjà fonctionnel issu des adaptations de versions antérieures. Cette version de SPIP étant déjà en lien avec la base de données de THELIA.
    2em Avoir un thelia 1.5.0 à la racine de SPIP qui pointe sur une base de données spécifique. Base de données déjà remplie et opérationnelle. Thelia ayant les plugins Produit virtuels et abonnements actifs.
    3em Avoir le plugin spip-thelia opérationnel avec ses ’imperfections’.
    4em mise en place d’un nouveau thelia dans une directorie thelia à la racine du site qui point sur une base de donnée indépendante de la précédente version de thelia.
    5em implantation des plugin thelia produit virtuel et abonnements.
    6em test de cette dernière version.
    7em modification de la connexion base de données de cette dernière version (fichier cnx.php) pour la faire pointer sur la base initiale thelia et ainsi avoir la bonne collection d’informations du site de vente précédent.
    8em Adapter l’adresse de racine du site THELIA pour le faire pointer sur la bonne directorie (http://golias-editions.fr/thelia/)
    9em transformation des adresses de type spip-thelia en adresses thelia dans les squelettes par exemple : [(#URL_SITE_SPIP)]/spip.php ?page=panier..... spip en [(#URL_SITE_SPIP)]/thelia/ ?fond=panier.....
    10em Adaptation des différent fichiers traitant des pages thelia dans le dossier thelia/template utilisé pour, entre autre, faire pointer le retour à la boutique à la racine du site spip et non à la racine du site thelia. Compléter l’adaptation des fichiers panier.html et mon_compte.html pour intégrer les fonctionnalités du plugin thelia abonnement.

    Ces transformations induites par le passage en UTF-8 et les modifications de SPIP et THELIA apportées par leurs dernières versions perturbent les mots de passe de THELIA et les liens de téléchargement. Ces défaillances collatérales sont mineures au regard de la simplification de fonctionnement du site.

    Avec cette articulation entre SPIP et THELIA, dans le plugin SPIP-THELIA seule la fonction qui traite du lien entre article spip et article-produit thelia (tables spip_produit_articles et spip_produit_rubriques) est exploitée. Ce plugin pourrait être simplifié (un autre nom serait probablement préférable) pour n’avoir que cette fonction.

    Merci à Camille LAFITTE pour son travail. Alain BOURDEAU

    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