THELIA Forum

Welcome to the THELIA support and discusssion forum

Offline


Bonjour,

Est-ce que ce serait facilement possible que dans l'admin mes déclinaisons soient désactivées par défaut alors qu'actuellement c'est le contraire ?
J'imagine qu'il faut modifier le fichier admin/produit_modifier.php, les déclinaisons sont traitées dans les lignes 190 etc.
Mais après je ne sais pas quoi modifier.
Alors possible ?
Merci.

Offline


Bonjour,
oui, ce serait bien que les déclinaisons nouvellement créées ne s'appliquent pas à toutes les rubriques existantes. Il est assez fastidieux d'aller corriger toutes les rubriques suite à la création d'une déclinaison !

Offline


Bonjour,

A tester à vos risques et périls : commenter la ligne 170 du fichier declinaison_modifier.php

jb

Offline


hello !

mais as-tu une idée sur le 'commenter' ?

Last edited by wts (21-05-2009 14:06:39)

Offline


Salut,

Oui bien sûr, j'ai une idée assez précise de la question : plutôt que d'effacer la ligne, préfère ajouter // devant, ça la désactive car alors elle est considérée comme du commentaire et non comme du code.

Avantage : pouvoir faire machine arrière simplement

Offline


Moi je préfère mettre:
/* Suppression */
// ligne de code
/* Fin suppression */

Et quand j'ajoute :
/* Ajout */
ligne de code
/* Fin ajout */

Au moins je sais ce qui est natif thelia et ce qui ne l'est pas ^^


Aide les autres, ils t'aideront en retour.

Offline


Hi !

J'ai fait :

/* Suppression */
//  $resul = mysql_query($query, $rubrique->link);
/* Fin suppression */

puis créée une nouvelle valeur (pour mon cas c'est des couleurs),
mais dans le backoffice, cette nouvelle valeur/couleur apparaît toujours activée !

Offline


la ligne à commenter est celle-là :

$rubdeclinaison->add();

Si ça marche pas je creuserais le sujet mais essaye déjà celle-là.

Offline


Hello !
Pour mon compte c'était ligne 176

j'ai mis :

//$rubdeclinaison->add();

mais ça ne fonctionne pas !

Offline


ok

en fait commentes tout le bloc :

/* modif ottoroots */
	 //$rubrique = new Rubrique();
	 //$query = "select * from $rubrique->table";
	 //$resul = mysql_query($query, $rubrique->link);
	 
	 //while($row = mysql_fetch_object($resul)){
		//$rubdeclinaison = new Rubdeclinaison();
		//$rubdeclinaison->rubrique = $row->id;
		//$rubdeclinaison->declinaison = $lastid;
		//$rubdeclinaison->add();
	 //}
/* fin modif ottoroots */

Avec l'Elyos touch style ..

C'est testé smile

Offline


tongue

Quand c'est des gros blocs je fais ça :

/* modif ottoroots */
     /*$rubrique = new Rubrique();
     $query = "select * from $rubrique->table";
     $resul = mysql_query($query, $rubrique->link);
     
     while($row = mysql_fetch_object($resul)){
        $rubdeclinaison = new Rubdeclinaison();
        $rubdeclinaison->rubrique = $row->id;
        $rubdeclinaison->declinaison = $lastid;
        $rubdeclinaison->add();
     }*/
/* fin modif ottoroots */

lol


Aide les autres, ils t'aideront en retour.

Offline


et moi honnêtement :

/* modif 
	 $rubrique = new Rubrique();
	 $query = "select * from $rubrique->table";
	 $resul = mysql_query($query, $rubrique->link);
	 
	 while($row = mysql_fetch_object($resul)){
		$rubdeclinaison = new Rubdeclinaison();
		$rubdeclinaison->rubrique = $row->id;
		$rubdeclinaison->declinaison = $lastid;
		$rubdeclinaison->add();
	 }*/

mais je voulais garder une continuité dans la logique d'apprentissage... tongue

Offline


Ca ne fonctionne toujours pas chez moi ?!!!
je crois que je suis sur la version 1.3.8

Offline


non je viens de vérifier, sur la 1.3.8 c'est exactement la même chose : si je commente les lignes 162 à 171 mes nouvelles déclinaisons ne sont pas automatiquement attribuées aux rubriques, je dois les activer manuellement au niveau des rubriques voulues, exactement ce que tu cherches à faire...

Last edited by ottoroots (21-05-2009 16:58:23)

Offline


Bon,
en effet ça marche,

j'avais lu :

"que dans l'admin mes déclinaisons soient désactivées par défaut alors qu'actuellement c'est le contraire ?'...
... et compris que c'était pour les produits et non les rubriques .....

J'ai tellement envie d'une solution pour que les caractéristiques ne s'appliquent pas automatiquement aux produits (actuellement à chaque nouvelle couleur, il me faut changer un centaine de produits !!! ce qui me fait peur pour l'avenir !)

j'avais donc dans mon euphorie zappé "ce serait bien que les déclinaisons nouvellement créées ne s'appliquent pas à toutes les rubriques existantes"

Désoloée et merci.

Offline


ok donc ce n'est pas ce que tu cherches à faire.

Tu as une déclinaison : couleur.
Et des declidisp pour cette décinaison : bleu, jaune, rouge.

Pour chaque produit tu attribues une valeur aux champs "stock" et "surplus" d'une declidip si la déclinaison "couleur" est activée pour la rubrique contenant le produit.

A partir de ces notions communes que cherches-tu  à faire  ?

Offline


C'est ça :

J'ai une déclinaison : couleur.
Et des declidisp pour cette décinaison : bleu, jaune, rouge...
... des couleurs, j'en ai beaucoup !

Je n'ai pas de gestion du stock, ni de surplus

Dès qu'il y a un nouveau produit avec une nouvelle couleur,
j'ajoute une declidisp : violet par exemple.

A ce moment là la nouvelle declidisp est activée sur tous mes produits.
Il faut donc que je reprenne les produits 1 par 1 afin de de les désactiver....
C'est long, très long et très fastidieux ! et à l'avenir, ce sera ingérable.

J'ai pensé à des déclinaisons libres, mais j'en ai besoin pour autre chose !

Offline


ok. J'ai compris smile

Voici un bout de code :

		//ajout ottoroots
		include_once("../classes/Exdecprod.class.php");
		
		$tprod= new Produit();
		$texdecprod = new Exdecprod();
		$query = "select id from $tprod->table";
		$resul = mysql_query($query, $tprod->link);
		while($row = mysql_fetch_object($resul)){
		
			$texdecprod->produit= $row->id;
			$texdecprod->declidisp=$res;
			$texdecprod->add();
		}		
		// fin ajout ottoroots

à rajouter à la ligne 223 de declinaison_modifier de la 1.3.8

Offline


HELLO !

J'ai essayé, mais désolée, ça continue à mettre une nouvelle couleur partout !!!

Peut-être une question de ligne ?! :
j'ai fait :
    function suppdeclidisp($declidisp){
                $tdeclidisp = new Declidisp();   
        $tdeclidisp->charger($declidisp);
        $tdeclidisp->supprimer();
        ICI INSERTION DE TON CODE - ligne 223
        $cache = new Cache();
        $cache->vider("DECLINAISON", "%");       
        $cache->vider("DECLIDISP", "%");
        $cache->vider("DECVAL", "%");
        $cache->vider("PRODUIT", "%");
    }

Offline


non c'est pas du tout là qu'il faut le mettre... c'est dans la fonction ajdeclidisp() avant la parenthèse fermante, à la fin de la fonction, après la ligne $tdeclidispdesc->add(). dans le fichier admin/declinaison_modifier.php

c'est quoi ces variables $cache ? Tu es sur quel fichier exactement ?

Offline


C'est dans : admin/declinaison_modifier.php

ligne 219 pour moi ! Peut-être suis-je sous une autre version, mais je ne sais comment savoir .... c'est de mémoire le 1.3.8...
depuis, pour d'autres sites je suis à la 1.3.9 et j'ai supprimé le fichier source 1.3.8 !

je teste - à tout

Offline


normalement la version est notée dans l'entête du BO wink.

Comme je teste sur des versions test modifiées remodifiées... j'ai pu moi aussi laisser trainer des lignes vides et décaler les numéros... bref, voilà la fonction ajdeclidisp() au complet qui permet de désactiver par défaut les nouvelles declidisp (en ajoutant à la table exdecprod une ligne liant l'ID du produit avec l'ID de la declidisp) :

	function ajdeclidisp($id, $declidisp, $lang){
	
		if(!$lang) $lang=1;
		
		$tdeclidisp = new Declidisp();
		$tdeclidisp->declinaison = $id;
		$res = $tdeclidisp->add();

		$tdeclidispdesc = new Declidispdesc();
		$tdeclidispdesc->declidisp = $res;
		$tdeclidispdesc->lang = $lang;
		$tdeclidispdesc->titre = $declidisp;
		
		$tdeclidispdesc->add();
		
		//ajout ottoroots
		include_once("../classes/Exdecprod.class.php");
		
		$tprod= new Produit();
		$texdecprod = new Exdecprod();
		$query = "select id from $tprod->table";
		$resul = mysql_query($query, $tprod->link);
		while($row = mysql_fetch_object($resul)){
		
			$texdecprod->produit= $row->id;
			$texdecprod->declidisp=$res;
			$texdecprod->add();
		}		
		// fin ajout ottoroots
		
	}

@+

Offline


Ca marche !!! BRAVO !

Je crois que c'était une question récurente sur le forum  !
Ca va en aider plus d'un !

Merci, merci !

Bon, en fait le site commence à dater c'est la version 1.3.7 !
Chez moi ça donne :

function ajdeclidisp($id, $declidisp, $lang){
	
		if(!$lang) $lang=1;
		
		$tdeclidisp = new Declidisp();
		$tdeclidisp->declinaison = $id;
		$res = $tdeclidisp->add();

		$tdeclidispdesc = new Declidispdesc();
		$tdeclidispdesc->declidisp = $res;
		$tdeclidispdesc->lang = $lang;
		$tdeclidispdesc->titre = $declidisp;
		
		$tdeclidispdesc->add();

		$cache = new Cache();
		$cache->vider("DECLINAISON", "%");		
		$cache->vider("DECLIDISP", "%");
		$cache->vider("DECVAL", "%");
		$cache->vider("PRODUIT", "%");
		
		
		
		 //ajout ottoroots
        include_once("../classes/Exdecprod.class.php");
        
        $tprod= new Produit();
        $texdecprod = new Exdecprod();
        $query = "select id from $tprod->table";
        $resul = mysql_query($query, $tprod->link);
        while($row = mysql_fetch_object($resul)){
        
            $texdecprod->produit= $row->id;
            $texdecprod->declidisp=$res;
            $texdecprod->add();
        }        
        // fin ajout ottoroots
		
	}

Last edited by wts (21-05-2009 18:37:11)

Offline


Merci pour ce topic, ça marche très bien.

Par contre, vu que de nombreux produits et déclinaisons ont déjà été créés, existe-t-il un script qui permette de désactiver toutes les déclinaisons une seule fois? Ou la meilleure solution reste-t-elle de supprimer toutes les déclinaisons et de les re-créer?

Offline


Re,
j'ai supprimé et recrée les déclinaison, donc là pas de souci les déclinaisons sont désactivées par défaut.
Par contre, quand on créée un nouveau produit, elles apparaissent activée par défaut. Comment les désactiver d'emblée aussi dans ce cas de figure?
merci.