Comment personnaliser une vue catégorie et ses articles ?

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Comment personnaliser une vue catégorie et ses articles ?

    Bonjour,

    Je cherche à personnaliser finement un type de contenus dans mon site en cours de dev.
    Je souhaite avoir une catégorie d'articles qui ne soient pas présentés comme les autres articles des autres catégories. (Comme le fait K2 par exemple, mais sans K2...)

    Il me semble que cela est possible avec la V3 de Joomla, mais je ne sais pas vraiment par quel bout prendre ce problème.
    Si je fais un template override du com_content/article, il faudra indiquer ce template pour chaque article.
    Or, je voudrais pouvoir faire un override au niveau catégorie qui habille tous les articles de la catégorie, sans avoir besoin d'affecter cette mise en forme personnalisée article par article.

    Y a-t-il un champion de l'override qui saurait me guider dans la jungle des docs Joomla pour me sortir le tutoriel magique ?

    D'avance merci
    Keep singing with the birds and smiling with the sun !

    << atelier51.com >> Philippe Marty : Web & Conseil

  • #2
    Re : Comment personnaliser une vue catégorie et ses articles ?

    Salut,
    c'est relativement simple, mais la méthode dépend un peu du template.
    Prenons protostar, et catégorie en mode blog.

    Dans la vue de "category" du com_content (views/category/tmpl), tu récupères ces 3 fichiers :

    blog_item.php
    blog.php
    blog.xml

    A placer classiquement dans le dossier html de ton template (com_content/category/).

    Tu les renommes en :
    macat_item.php
    macat.php
    macat.xml

    Dans le fichier macat.xml, tu modifies ceci :
    <metadata>
    <layout title="COM_CONTENT_CATEGORY_VIEW_DEFAULT_TITLE" option="COM_CONTENT_CATEGORY_VIEW_DEFAULT_OPTION">
    en ceci :
    <metadata>
    <layout title="macat" option="macat">
    Là, j'y vais un peu à la hache, si tu connais les overrides de langage, c'est facile à corriger.

    Tu crées un lien de menu.
    Dans " Type de lien de menu ", en cliquant sur "Articles", tu devrais retrouver "macat".
    Voir les copies d'écran :



    NB : cette méthode fonctionne aussi avec les articles, les articles en vedette, etc ..

    Mais comme je précise plus haut, certains templates (comme ceux de yootheme) donnent la possibilité de mettre en place ce type d'affichage, mais différemment.

    Donc, quel est le template utilisé ?
    Dernière édition par ghazal à 11/08/2015, 18h29
    Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

    Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

    Commentaire


    • #3
      Re : Comment personnaliser une vue catégorie et ses articles ?

      Bonjour Ghazal,

      Merci pour les infos qui me manquaient par rapport à cette doc : https://docs.joomla.org/Layout_Overrides_in_Joomla
      Je n'avais pas compris que cet override de catégorie était ensuite accessible par le lien de menu... Je cherchais mes petits dans les paramètres de la catégorie et j'avoue que je ne m'y retrouvais pas ! A présent c'est bien clair et c'est fonctionnel sur ce template (fourni par mon commanditaire) : http://bit.ly/1JSSDTc

      En revanche... Mon problème n'est pas résolu, car :
      • Si j'arrive bien à personnaliser l'affichage de la vue blog de la catégorie désignée dans mes paramètres de lien de menu
      • Je ne peux cependant toujours pas modifier la "vue article" des articles de cette vue blog


      Je veux dire que lorsque je clique sur un des articles de cette vue blog personnalisée, je tombe sur un article avec le modèle par défaut du site.
      Ce que je recherche, c'est comment avoir une descendance de modèles jusqu'à la "vue article". En fait, comme à la mode K2, on applique un modèle sur une catégorie, et on peut personnaliser les intros de la vue blog, mais aussi les articles eux même appartenant à cette catégorie.
      (Pourquoi ne pas utiliser K2 me direz-vous ? Bin en l'occurence parce que je souhaite rester sur du Joomla pur !)

      Alors, y a-t-il une étape que j'ai ratée ?
      Merci encore
      Keep singing with the birds and smiling with the sun !

      << atelier51.com >> Philippe Marty : Web & Conseil

      Commentaire


      • #4
        Re : Comment personnaliser une vue catégorie et ses articles ?

        Bonjour
        Peut-être une idée :

        Index.php :

        Code PHP:
        <?php
        defined
        ('_JEXEC') or die;
        require_once 
        JPATH_THEMES.'/'.$this->template.'/logic.php';
        ?>
        <!DOCTYPE html>
        Logic.php :

        Code PHP:
        <?php
        defined
        ('_JEXEC') or die;
        $app JFactory::getApplication();
        $doc JFactory::getDocument();
        $params $app->getParams();
        $view JRequest::getCmd('view');
        $id JRequest::getVar('id');
        $Itemid JRequest::getVar('Itemid');
        $tpath $this->baseurl.'/templates/'.$this->template;
        unset(
        $doc->_styleSheets[JURI::root(true) . '/templates/cssdutemplate.css']);
        if (
        $view == 'category' && ($Itemid == '22')) {
          
        $doc->addStyleSheet(''.$tpath.'/css/monnouveaucss.css');
        }
        // OU
        if ($view == 'category' && ($id == '15')) {
          
        $doc->addStyleSheet(''.$tpath.'/css/monnouveaucss.css');
        }
        // OU
        if ($view == 'category' && ($Itemid == '481') && ($id == '15')) {
          
        $doc->addStyleSheet(''.$tpath.'/css/monnouveaucss.css');
        }
        // etc....modulable avec les conditions != && == même chose pour les articles (if ($view == 'article')
        Dernière édition par -Tony- à 12/08/2015, 08h37

        Commentaire


        • #5
          Re : Comment personnaliser une vue catégorie et ses articles ?

          Pardon je crois que j'avais mal lu, c'est pas le css que tu veux modifier mais le html, j'avais pas encore bu le deuxième café.
          Mais a mon avis tu peux essayer le même principe.

          Code PHP:
          <?php
          defined
          ('_JEXEC') or die;
          $view JRequest::getCmd('view');
          $id JRequest::getVar('id');
          $Itemid JRequest::getVar('Itemid'); 
          ?>
          <?php 
          if ($view == 'category' && ($id == '22')) : ?><div class="coucou"></div><?php endif; ?>
          <?php 
          if ($view == 'category' && ($id != '22')) : ?><div class="hello"></div><?php endif; ?>

          Commentaire


          • #6
            Re : Comment personnaliser une vue catégorie et ses articles ?

            @tony
            pas mal.
            Mais j'ai une autre proposition, à @elfif de voir.

            Je ne peux cependant toujours pas modifier la "vue article" des articles de cette vue blog
            si tu peux jouer seulement sur les CSS, une solution économe en modifs .

            1- le lien de menu vers la catégorie
            lui attribuer une classe dans Paramètres d'affichage de la page :
            macatcss (avec un espace devant)

            2 - dans default.php de
            templates/protostar/html/com_content/article/default.php, +-ligne 24
            rajouter :
            categoryid-<?php echo $this->item->catid; ?>
            ce qui donne :

            <div class="item-page<?php echo $this->pageclass_sfx; ?> categoryid-<?php echo $this->item->catid; ?>" itemscope itemtype="http://schema.org/Article">
            Donc, d'un coté, tu récupères un style css pour la catégorie
            de l'autre, un style CSS pour l'article

            Rendu html pour article:
            <div itemtype="http://schema.org/Article" itemscope="" class="item-page macatcss categoryid-80">
            <meta content="fr-FR" itemprop="inLanguage">
            rendu pour la catégorie :
            <div itemtype="http://schema.org/Blog" itemscope="" class="blog macatcss" style="position: relative; width: 960px; height: 855.2px; visibility: visible;">
            Tu peux aussi essayer une solution qui permet de modifier l'affichage de l'article en créant 3 fichiers dans templates/protostar/html/com_content/article/
            monarticle_links.php
            monarticle.php
            monarticle.xml
            Correction de monarticle.xml à faire

            et tu retrouves pareil ce choix d'affichage dans Type de lien de menu.

            Hope it helps.
            Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

            Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

            Commentaire


            • #7
              Re : Comment personnaliser une vue catégorie et ses articles ?

              Bonjour bonjour,

              J'étais hors ligne hier et je découvre vos idées.
              Merci à vous pour les propositions.

              @ghazal : En effet c'est bien le html que je souhaite modifier pour avoir un template cohérent (de la vue blog à la vue article) et personnalisé pour une catégorie spécifique.

              C'est curieux que Joomla ne prévoit pas cette filiation naturelle du modèle jusqu'au bout. Ya ptet une "feature request" à lancer pour les prochaines versions ?


              @Tony, en partant sur ton idée, j'ai pensé à une solution assez simple qui me dépanne.

              Je fais un override du fichier de mise en forme des articles :
              templates/MON_TEMPLATE/html/com_content/article/default.php

              Dans celui ci je déclare mes variables en haut du fichier
              Là, ya ptet moyen d'appeler plus proprement les variables ? (suis pas un as du php...)
              Code PHP:
              <?php 
              defined
              ('_JEXEC') or die;
              $mavue JRequest::getCmd('view');

              $params $this->state->get('params');
              $macat $this->item->catid;
              Et plus bas, dans mon code de présentation du contenu, j'appelle selon mes besoins et en suivant ton principe :
              Code PHP:
              <?php if ($mavue == 'article' && ($macat== '82')) : ?><div class="coucou">Mise en page pour catégorie personnalisée</div><?php endif; ?>
              <?php 
              if ($mavue == 'article' && ($macat != '82')) : ?><div class="hello">Mise en page pour catégorie normale</div><?php endif; ?>

              Ca fonctionne impeccable et reste stable lors des mises à jour de Joomla ou du template.
              Le bémol c'est que ce n'est pas gérable depuis le panneau d'administration. Toute personnalisation d'une vue article passe par la gestion du fichier default.php qui devient un peu plus lourd. Mais pour mon utilisation actuelle c'est mineur et je suis ravi d'avoir une solution !

              Merci pour vos sources d'inspiration.
              Je reste tout de même persuadé qu'une mise en forme héritée jusqu'à la vue article serait un vrai PLUS pour Joomla...
              Bonne journée !
              Keep singing with the birds and smiling with the sun !

              << atelier51.com >> Philippe Marty : Web & Conseil

              Commentaire


              • #8
                Re : Comment personnaliser une vue catégorie et ses articles ?

                T'as fais un mix d'idées ^_^

                Ghazal je bidouille sans avoir lu le manuel, je décrypte en testant et observant, je trouve ton code pour récupérer l'ID sexy ^_^, j'aime bien, mais concrètement à quoi correspond la variable "&this"/que veux elle dire précisément en php et/où est elle définie (quel fichier php?)
                Merci (c'est le genre de broutilles qui m'aide)

                Commentaire


                • #9
                  Re : Comment personnaliser une vue catégorie et ses articles ?

                  mais concrètement à quoi correspond la variable "&this"/que veux elle dire précisément en php et/où est elle définie (quel fichier php?)
                  Une explication :

                  Joomla 2.5 Templates - $this-> - InMotion Hosting
                  The $this variable is used quite often in the Beez2 Joomla 2.5 template, and it references the JDocumentHTML Object.
                  Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

                  Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X