THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

J'essaye de mettre en place une boucle "CHEMIN", elle me donne des résultats bizarres. J'essaye avec la template fournie, par ex:

Pour un produit ProdSSrubtest1 qui est dans SSrubtest1 qui est dans Rubrtest1:

Dans l'affichage rubrique.php, quand on est au niveau principal, on a 2 fois l'affichage de la rubrique:

Accueil boutique / Rubrtest1 / Rubrtest1 

Quand on descend dans la sous-rubrique, cela semble ok (mais c'est par chance grâce à un affichage de titre plus loin):

Accueil boutique / Rubrtest1 / SSrubtest1 

Quand on descend au niveau produit.php, on n'a qu'une fois la rubrique, et pas la sous-rubrique:

Accueil boutique / Rubrtest1 /  ProdSSrubtest1

D'après la doc, la boucle CHEMIN est censée retourner l'id, le titre et l'url des rubriques, ici ça ne retourne rien, il faut systématiquement imbriquer une boucle rubrique pour afficher quelque chose et c'est ce qui génère les comportements ci-dessus, en fait on peut supprimer la boucle CHEMIN, on a les mêmes résultats.
En fait d'ailleurs, quand je dis "rien", c'est faux, ça m'affiche carrément "#ID" ou "#TITRE" littéralement.

Je précise que dans la template exemple ainsi que dans mes tests, j'imbrique la boucle chemin dans une boucle soit rubrique soit produit.

Maintenant si je sors la boucle chemin toute seule (sans l'imbriquer dans une autre), cela marche déjà mieux, on obtient des résultats logiques. Par contre un autre bug: la boucle marche à tous les niveaux sauf au tout premier ou au lieu de ne rien retourner elle retourne la rubrique en cours ce qui résulte en un double affichage que l'on a pas dès qu'on a 2 ou 3 niveaux ou la boucle n'affiche pas la rubrique en cours.

En tout état de cause, je vais essayer de bidouiller pour afficher quelque chose de cohérent !

Pierre.

Offline


Salut Pierre,

Il y a un problème avec le cache pour cette boucle d'une part, et d'autre part pour avoir le chemin complet tu dois spécifier la profondeur (1 par niveau de rubrique dans ton BO).

En attendant qu'on ait trouvé la soluce, tu peux tjrs désactiver le cache(...tu mets $nocache=1; dans le fichier.php d'appel du template concerné)...

  • yoan
  • Cofondateur Thelia

Offline


Ce bug n'est pas sur le tracker ?

Je viens de corriger ça.


http://yoandemacedo.com

Cofondateur de la solution Thelia 1.x

Offline


Petites questions concernant ce genre de correctif (pour lequel je vous remercie en tout état de cause !):

- quels ont été les fichiers modifiés ?
- est-il possible de les récupérer et de les appliquer sur la dernière stable (1.2.2 sauf erreur de ma part) ou faut-il absolument passer en 1.3 ?

Merci.

  • yoan
  • Cofondateur Thelia

Offline


Il y a un truc que je ne comprends pas. On parlait de soucis de cache. Le cache n'existe pas sur la 1.2.2


http://yoandemacedo.com

Cofondateur de la solution Thelia 1.x

Offline


Euh, c'est David49 qui a parlé de cache, pas moi :-) Mon pbm est décrit dans le premier message, posté le 6/6, je pense même pas que la 1.3 existait à ce moment.

  • yoan
  • Cofondateur Thelia

Offline


OK, c'est donc un vieux bug ça, je m'en souviens.
ouvre fonctions/divers.php et remplace la fonction chemin par

        function chemin($id){

                $tab ="";

                $trubrique = new Rubrique();
                $trubrique->parent = $id;


                $i =  0;
                do {
                        $trubriquedesc = new Rubriquedesc();
                        $trubrique->charger("$trubrique->parent");
                        $trubriquedesc->charger($trubrique->id);
                        $tab[$i] = new Rubriquedesc();
                        $tab[$i++] = $trubriquedesc;
                } while($trubrique->parent != 0);

                $i--;

                return $tab;

        }

Pareil pour chemin_dos

        function chemin_dos($id){

                $tab ="";

                $tdossier = new Dossier();
                $tdossier->parent = $id;

                $i =  0;
                do {
                        $tdossierdesc = new Dossierdesc();
                        $tdossier->charger("$tdossier->parent");
                        $tdossierdesc->charger($tdossier->id);
                        $tab[$i++] = $tdossierdesc;

                } while($tdossier->parent != 0);

                $i--;

                return $tab;



        }

http://yoandemacedo.com

Cofondateur de la solution Thelia 1.x

Offline


J'ai appliqué ce correctif mais je suis pas sûr que ça corrige mon bug.
Exemple:
J'ai cette hiérarchie:

Boutique > Cosmétiques > Soins Visage

        <THELIA_chemrub type="CHEMIN">
            <a href="#URL">#TITRE</a> >            
        </THELIA_chemrub>

Si je suis au niveau Soins Visage, la boucle ci-dessus retourne:

Boutique > Cosmétiques >

Si je suis au niveau Cosmétiques, elle retourne:

Boutique > Cosmétiques >

Donc la même chose bien qu'on soit à 2 niveaux différents. On dirait que quand on est au niveau 1, elle retourne au moins le titre du niveau 1, alors que dans les niveaux en-dessous elle n'affiche les titres que jusqu'au niveau au-dessus. Ce pourrait être l'un ou l'autre comportement, mais pas les 2 ... ma préférence va à l'arrêt un niveau au dessus, je souhaite gérer l'affichage du titre du niveau en cours en dehors du fil d'ariane. Donc au niveau Cosmétiques je devrai avoir:

Boutique >

->David49: je vois pas comment gérer ça avec profondeur ... par définition pour ce genre de boucle, ce que je veux c'est justement connaitre la profondeur, comment la mettre en paramètre si je la connais pas ? ou alors y a un truc qui m'échappe, ce qui est possible :-)

Last edited by pierrot (11-07-2007 14:51:21)