[Reglé]Un texte d'intro en haut de page des différentes catégories

2»

Réponses

  • C'est pas faux :| , le peu que je connaisse de php c'est ce que j'en comprends par déduction logique, si tu veux sur le principe je comprends mais là j'ai l'impression qu'il en manque des bouts, là je comprends (sur la deuxieme partie) que si pluxml est en mode "hom" la variable catégorie devient "présentation", mais ca il faut que ça soit juste sur la page d'accueil, pas sur les autres, et la première partie, ce que je ne comprends pas c'est : "$pluxml->uCats....."

    Je comprends que tu n'aies pas le temps en ce moment, ce n'est pas grave, je ne vais peut-être pas avoir besoin de faire ça tout de suite tout de suite, mais si tu peux y repenser quand tu auras le temps ... :D merci !
  • stoopxstoopx Member
    décembre 2006 modifié
    Bon en fait j'en ai besoin hyper vite de cette fonction, et je galère vraiment, je me suis dit tampis, je vais coder ça en dur et pas passer par un include, mais quel con je fais, effectivement, ça marche, mais le problème reste le même, sur la page d'accueil, ma variable "categorie" est toujours fonction du dernier article créé, et du coup si c'est un article de la catégorie vidéo, elle prend la valeur "vidéo" et pas "accueil"

    J'ai pensé à autre chose, mais je sais pas si c'est faisable (facilement) et moi en tous cas, je ne saurais pas faire :

    Est-il possible au moment de définir la variable, de faire examiner tous les articles de la catégorie plutôt que le premier seulement, et si il y a deux articles de catégories différentes, la variable prenne la valeur "accueil" ?

    Merci d'avance si quelqu'un peut m'aider avec cette idée ou en m'expliquant le code que ma donné skyline un peu plus haut, ça urge vraiment (je démissionne de mon taf le 31 décembre et j'ai promis à mes patrons de terminer le site de la boite avant mon départ) et comme l'a fait remarquer skyline, mon gros problème c'est de ne pas connaitre php donc j'ai vraiment besoin d'aide.
  • Bon finallement, j'ai trouvé une autre technique, qui marche, je vous l'expliquerai dans un autre topic, ça peut toujours servir a quelqu'un :)
  • Voilà ce que je te propose :
    <?php
    # à ajouter au début du fichier template
    if($pluxml->mode == 'cat'){ # Si on est en "mode catégorie" on se base sur le nom de la catégorie pour trouver le fichier à inclure 
          $categorie = $pluxml->cat_used[$pluxml->a_article['0']['cat_num']]['name'];
    }
    if($pluxml->mode == 'home'){ # Si on est en "mode home" (page d'accueil y compris) on se base sur le fichier présentation
          $categorie = 'presentation'
    }
    ?>
    
    
    <?php
    # à ajouter où l'on veux afficher le texte de présentation associé à chaque catégorie
    include($categorie.'.txt');
    ?>
    
    Ce script va inclure le fichier .txt qui porte le nom de la catégorie en cours, sinon il inclut le fichier 'presentation.txt'
  • Merci Skyline, je testerai ça demain matin au taf.

    Cependant, avant d'avoir testé, je me permet d'emettre un doute, une interrogation disons que je me pose en lisant ton code Skyline.

    Est-ce que ton code veut dire cela :

    En mode catégorie, la variable categorie est déterminée par une analyse du premier article de la page dans laquelle on se trouve, et en mode "home" (mode ou accueil est une categorie, c'est à dire si on a créé un article auquel on a attribué la categorie "accueil", si j'ai bien compris) la variable categorie prend la valeur 'presentation' tout le temps, mais dans ce cas que se passe-t-il lorsqu'en mode catégorie on se trouve sur la page d'accueil?
    La variable categorie va prendre la valeur déterminée par l'analyse du premier article de la page, c'est à dire le dernier publié sur le site, et cet article peut être de n'importe quelle catégorie, mais jamais accueil, non ? le problème reste donc le même.

    Ou cela :

    En mode catégorie, la variable categorie est déterminée par une analyse du premier article de la page dans laquelle on se trouve, et en mode "home" (c'est à dire quand on est sur la page d'accueil, même en mode catégorie) la variable catégorie prend la valeur 'presentation', auquel cas effectivement mon problème serait réglé, puisque le problème était justement de pouvoir "détecté" la page d'accueil, dans un mode comme dans l'autre (enfin surtout en mode catégorie)

    ???

    En fait ce que je me demande c'est si j'ai bien compris le principe des mode catégorie et home, parce que pour moi le mode catégorie c'est quand la page d'accueil sert de page de "news" disons, je veux dire par là quand on retrouve sur l'accueil tous les articles, toutes catégories confondues, et le mode home c'est comme je le dit plus haut, c'est le mode ou accueil est une categorie, c'est à dire si on a créé un article auquel on a attribué la categorie "accueil".

    Franchement, je dis rarement ça, mais j'éspère n'avoir pas tout bien compris, parce que si j'ai bien compris, mon problème n'est pas réglé :(

    Si malheureusement j'ai bien compris et que mon problème reste inchangé, est-ce que tu peux me dire Skyline si mon idée de 3 replys plus haut est faisable ?
    C'est à dire analyser tous les articles d'une catégorie plutôt que seulement le premier afin, si l'analyse montre plusieurs articles de catégories différentes, de définir la variable categorie avec la valeur "accueil" puisque seule la page d'accueil peut regrouper des articles de catégories différentes ?
  • Bon et ben, je le dis rarement aussi lol mais je suis content d'avoir été ignorant sur ce coup là, parce que je viens d'essayer et si ce n'est le fait que tu aies oublié un ";" ce qui m'a quand même fait tourné en bourique pendant un quart d'heure lol, CA MARCHE !!! Waou c'est génial, je suis trop content, merci Skyline :)

    Si tu (et les autres aussi) veux voir ce que ça donne, le site est là:

    http://cms.synthesevideo.com/pluxml0.3.1/index.php

    Le header et l'intro (en image aussi pour aller plus vite et permettre à ma patronne de faire la mise en page qu'elle veut) qui change en fonction de la catégorie dans laquelle on se trouve.

    C'est le site d'une boite, le résultat est ptet pas flagrant puisque les headers sont assez similaires, mais dans un autre cas, avec cette fonctionnalité là, on a des possibilités de malade pour le template, on peut vraiment faire ce qu'on veut, et ça c'est cool, genre changer la css en fonction de la categorie, ...

    Merci encore Skyline, je pense que ça devrait faire l'objet d'un ajout dans la documentation, parce qu'à mon avis ça sera utile à pas mal de monde ce truc là.
  • :D tant que j'y suis, tu sais ce qui serais génial aussi Skyline ? :D

    Ce serait que le fichier (ici une image) que j'inclue ou affiche au dessus des articles dans chaque catégorie (on va appeller ça intro de catégorie), ne soit pas visible en mode article, enfin je dis mode article, mais je ne suis pas sûr que c'est bien ça le mode article, je parles de quand tu suis le lien "lire : nom de l'article" et que tu te retrouve sur la page ou seul cet article est affiché dans son complet, chapô et contenu, là ce serait bien de ne pas avoir l'intro de catégorie qui n'a au final rien à y foutre puisque l'important ici c'est le contenu de l'article, pas la catégorie, tu vois ce que je veux dire ? c'est possible ?
  • MagicYoyoMagicYoyo Member
    janvier 2007 modifié
    Bonjour;

    Pour rebondir sur ce sujet, je trouves vraiment dommage de ne pas avoir conçu l'arborescence comme des pages parentes/pages enfants; plutôt que catégorie/page.
    Cela aurait réglé directement ce problème de page d'accueil, non ?
  • Je ne vois pas trop ce que tu veux dire par là, tu peux développer un peu ?
  • Ce qu'on peut "includer" aujourd'hui dans une page d'accueil, c'est du contenu géré hors du CMS :
    <?php
    # à ajouter où l'on veux afficher le texte de présentation associé à chaque catégorie
    include($categorie.'.txt');
    ?>
    
    Si j'ai bien compris, Pluxml définit des catégories et des pages.
    N'aurait-il pas été plus simple de concevoir que Pluxml ne gère seulement des pages, qui optionellement peuvent avoir des pages enfant ?
  • C'est à Skyline de se prononcer là, perso la solution qu'il m'a donné était suffisante pour ce site là, mais c'est vrai que c'est pas l'déal non plus puisque la présentation est aussi présente quand on affiche le contenu de l'article.
  • elodyelody Member
    Comme quoi tu as bien d'insister stoopx , car ta démarche vient de me rendre bien service, et je suis sure de ne pas etre la seule ;)
    Pour ma part j'avais seulement besoin d'un texte d'accueil, un ptit édito en somme, eh bien ca marche nickel ^^

    Donc merci stoopx et merci skyline biensur pour sa super disponibilité - et sa patience ;)
  • stoopxstoopx Member
    De rien, et merci encore à Skyline au passage ;)
  • bricabrica Member
    Bonjour,

    J'ai installé le code pour afficher un texte différent par catégorie. Cela marche parfaitement pour la page d'accueil. Le fichier presentation.txt est localisé dans le dossier /core/template/defaut/

    Je ne vois pas comment nommer les autres fichiers pour les autres catégories.

    Si une catégorie s'appelle "Categorie" comment doit se nommer le fichier ?
    - Categorie.txt ?
    - 001/Categorie.txt ?
    - 001.Categorie.txt ?
    - 001Categorie.txt ?
    - autrement ?

    Merci pour votre aide et bonne journée
    Brica
  • Categorie.txt ;)
  • bricabrica Member
    juin 2007 modifié
    Merci, c'est ce qui me semblait logique... or le souci, c'est que...

    ... j'obtiens l'erreur suivante :

    Warning: include(.txt) [function.include]: failed to open stream: No such file or directory in /foo/core/templates/foo/template.php on line 152

    Warning: include() [function.include]: Failed opening '.txt' for inclusion (include_path='.:/usr/local/php5/lib/php') in /foo/core/templates/foo/template.php on line 152

    J'ai glissé le fichier "Categorie.txt" dans le répertoire templates/foo (comme "presentation.txt" qui s'affiche sans problème en "home") puis à la racine : ça coince. Les droits sont à tout hasard en 777.

    Une idée ?

    Merci !
    brica
  • Il y a-t-il un accent au nom de la catégorie ?
  • bricabrica Member
    juin 2007 modifié
    Pas d'accent et je respecte les majuscules/minuscules.

    J'utilise ce code publié sur cette page :
    <?php
    # un texte specifique en tete de categorie
    // error_reporting(0);
    if($pluxml->mode == 'cat')
    	{ # Si on est en "mode catégorie" on se base sur le nom de la catégorie pour trouver le fichier à inclure 
    		@$categorie = $pluxml->cat_used[$pluxml->a_article['0']['cat_num']]['name'];
    	}
    if($pluxml->mode == 'home')
    	{ # Si on est en "mode home" (page d'accueil comprise) on se base sur le fichier présentation
    		$categorie = 'presentation';
    	}
    ?>
    
    et ce code :
    <?php
    # à ajouter où l'on veut afficher le texte de présentation associé à chaque catégorie
    include($categorie.'.txt');
     ?>
    
    En mode home, le fichier presentation.txt est bien reconnu.

    En mode cat (j'ouvre "Categorie" par exemple), le fichier Categorie.txt n'est pas trouvé. Est-ce le fait que j'ai ajouté une "@" à la variable $categorie ? (je suis sous PHP5 sur mon Mac).
  • Il faudrait que tu fasses afficher le contenu de la variable $categorie pour que l'on puisse voir si elle est bien renseignée à chaque fois.
  • bricabrica Member
    En mode catégorie, la variable $categorie est vide. Je pense que c'est cette ligne qui pose souci :
    $categorie = $pluxml->cat_used[$pluxml->a_article['0']['cat_num']]['name'];
    
    Si je ne place pas d'arobase à @$categorie, j'obtiens ces deux messages d'erreur :
    Notice: Undefined property: pluxml::$a_article in /foo/core/templates/lecocite/template.php on line 49
    et
    Notice: Undefined property: pluxml::$cat_used in /foo/core/templates/lecocite/template.php on line 49
    En rajoutant l'arobase (pas très orthodoxe, mais bon...), j'obtiens :
    Warning: include(.txt) [function.include]: failed to open stream: No such file or directory in /foo/core/templates/lecocite/template.php on line 153
    et
    Warning: include() [function.include]: Failed opening '.txt' for inclusion (include_path='.:/usr/local/php5/lib/php') in /foo/core/templates/lecocite/template.php on line 153
    On constate que la variable $categorie est bien vide. Je suis sous Pluxml blog beta 02-07. Une idée ?
  • Je pense que c'est tout simplement du au fait que ce code a dû être écrit pour une version classique de Pluxml (vivement que je fusionne tout ça).
    Les variables cat_used et a_article ont du changer de nom.
  • bricabrica Member
    J'ai réussi à trouver la correspondance avec une ou deux variables, mais pas pour les autres... Je baisse les bras. Par manque de temps... et incompétence, surtout.
  • C'est la correspondance avec quelle variable qui pose problème ?
  • Comme je viens de me creuser un peu la tête pour trouver comment récupérer le nom de la catégorie en cours sur une page catégorie avec Pluxml 5.1.6, voici ce que j'ai mis dans mon fichier categorie.php :
    <?php echo $plxShow->plxMotor->aCats[$plxShow->plxMotor->cible]['name']; ?>
    

    Donc pour ceux qui voudraient encore faire ce que soulèvent ce thread, on pourrait adapter l'ancien:
    @$categorie = $pluxml->cat_used[$pluxml->a_article['0']['cat_num']]['name'];
    

    par :
    @$categorie = $plxShow->plxMotor->aCats[$plxShow->plxMotor->cible]['name'];
    
  • Bonjour,


    l'astuce de Samare: afficher le titre et la description de la catégorie


    Cordialement,
  • burninghatburninghat Member
    octobre 2012 modifié
    ah bah merci, je ne le connaissais pas ce site et n'avais pas trouvé ce billet. :-) et pourquoi encadrer le tout par plxUtils::strCheck() au fait ?!
  • c'est un truc de sécurité, l'injection de chépakoi.
    C'est le boss qui l'a dit, moi je fais :p ^^^
  • okay je prends note, merci beaucoup pour ce complément d'info en tous cas! ;-)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour
    Effectivement la fonction plxUtils::strCheck() protège l'affichage de l'injection de javascript pouvant créer des failles XSS

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

Connectez-vous ou Inscrivez-vous pour répondre.