article -> "Type de mise en page" ne fonctionne pas

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

  • [Problème] article -> "Type de mise en page" ne fonctionne pas

    Bonjour à tous,

    Sur joomla 2.5, je voudrais pouvoir utiliser pour l'affichage des articles des types de mise en page différentes, a renseigner lors de la création de l'article dans l'option prévue à cet effet, qui se trouve en bas des options "Paramètres de l'article", et qui se nomme donc "Type de mise en page".
    On a une liste déroulante dans laquelle on peut choisir plusieurs mises en page.
    J'ai donc créer dans le dossier templates/mon_template/html/com_content/article/ plusieurs overrides du fichier default.php
    Je retrouve bien dans cette liste déroulante les différents fichiers que j'ai créé, mais ils ne sont pas pris en compte. C'est au final toujours le fichier default.php qui prime sur les autres.

    Ai-je oublié une étape ?
    Dernière édition par Dibi à 21/11/2012, 13h36

  • #2
    Re : article -> "Type de mise en page" ne fonctionne pas

    Si tu essayais en modifiant le default plutôt que de créer des nouvelles vues qui doivent être prises en charge par le controlleur si tu veux les utiliser.
    Je dis peut-être des conneries, je n'utilise pas com_content, mais tu overrides déjà les vues des articles en créant templates/mon_template/html/com_content/article/
    Christophe
    http://www.webcrea.fr

    Commentaire


    • #3
      Re : article -> "Type de mise en page" ne fonctionne pas

      Salut webcrea,

      Effectivement, en créant templates/mon_template/html/com_content/article/ , on override le fichier default de base, mais c'est justement le but. Et en fait on doit pouvoir être capable de créer plusieurs fichiers de définition de l'affichage des articles, et choisir dans l'admin, dans les options d'un article, quel fichier devra être lu pour déterminer son affichage. C'est du moins une option proposé depuis joomla 2.5.
      Le problème est que cela ne fonctionne pas.
      Par exemple, si je copie le fichier default.php de base dans mon dossier d'override, que je renomme celui-ci en article_1.php, et que je sélectionne ce fichier dans les option d'un article, l'article devrait en théorie utiliser article_1.php. Or il n'en est rien. Si je supprime le fichier default.php de base, l'article ne s'affiche pas, on récupère une erreur 500.
      Donc je ne sais pas du tout comment faire pour utiliser correctement cette fonctionnalité.

      Commentaire


      • #4
        Re : article -> "Type de mise en page" ne fonctionne pas

        Bonjour,
        Et en fait on doit pouvoir être capable de créer plusieurs fichiers de définition de l'affichage des articles, et choisir dans l'admin, dans les options d'un article, quel fichier devra être lu pour déterminer son affichage. C'est du moins une option proposé depuis joomla 2.5.
        L'extension est possible, mais il faut bien comprendre la logique MVC. A chaque vue est associée un Model et un Controller.
        Donc, en prenant par exemple dans com_content, views, article pour al vue détaillée d'un article, et en voulant définir une vue article2

        1. copier /components/com_content/views/article dans /components/com_content/views/article2
        2. éditer dans article2

        Dans le fichier view.html.php, changer le nom de la classe ContentViewArticle en ContentViewArticle2

        3. Créer un controller pour cette vue, le nom du controller devant être celui du répertoire des vues, dans notre cas article2. Le plus simple est de copier /components/com_content/controllers/article.php en /components/com_content/controllers/article2.php
        Dans ce fichier article2.php changer le nom de la classe ContentControllerArticle en ContentControllerArticle2

        4. Créer un Model pour la vue, par exemple en copiant /components/com_content/models/article.php en /components/com_content/models/article2.php
        Editer ce fichier article2.php. Renommer la classe ContentModelArticle en ContentModelArticle2

        Maintenant, dans /components/com_content/views/article2/tmpl, les fichiers peuvent être personnalisés, et pourront être surchargés par le template.
        Idem pour le Model et Controller qui peuvent être optimisés selon les besoins.

        Pour en savoir plus http://docs.joomla.org/Developing_a_..._the_site_part
        Pas de demande de support par MP.
        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

        Commentaire


        • #5
          Re : article -> "Type de mise en page" ne fonctionne pas

          Bonjour jisse et merci pour la réponse.

          J'ai donc suivi à la lettre tes instructions. Comment dois-je faire maintenant pour que les articles de mon choix utilisent la vue article2 pendant que d'autres utiliseront toujours la vue article ?
          J'ai beau modifier les noms de fichiers ou faire un override dans templates/mon_template/html/com_content/article2/ je n'arrive pas à retrouver cette nouvelle vue dans le choix de "Types de mises en page" de mes articles.
          Dernière édition par Dibi à 23/11/2012, 13h12

          Commentaire


          • #6
            Re : article -> "Type de mise en page" ne fonctionne pas

            Désolé pour le manque de suivi mais je ne clique pas toujours sur l'option...

            Ton problème m'a intrigué donc j'ai investigué et voilà ce que j'ai découvert

            J'ai fait ce que tu as fait, soit créer une vue.php que j'ai mise dans tmpl d'article... etc du template
            Elle monte bien dans les choix de type de mise en page mais surprise, elle n'est pas appliquée quand je l'appelle

            J'ai donc regardé dans components/com_content/views/article/view.html.php comment c'est traité

            Ligne 62
            Tu vois que le layout appliqué est celui de l'option de menu si l'article est appelé par un menu
            Si pas de menu appelant, c'est le layout déclaré dans le l'article
            (layout étant le type de mise en page)

            La question est de savoir pourquoi, sachant qu'à aucun endroit dans une option de menu tu peux déclarer un layout ? C'est une bonne question...

            Teste sur mon site :

            Article appelé à partir d'une option de menu :
            http://www.webcrea.fr/webagency/inde...=20&Itemid=147

            Article appelé directement :
            http://www.webcrea.fr/webagency/inde...=article&id=20
            Tu remarqueras sans Itemid

            La vue est celle signée avec @ webcrea alors que le default est signé webcrea sarl

            Je suppose qu'il y a une bonne raison à ça mais je ne la connais pas...
            Christophe
            http://www.webcrea.fr

            Commentaire


            • #7
              Re : article -> "Type de mise en page" ne fonctionne pas

              Petit détail complémentaire que j'ai oublié de préciser.

              Dans model/article2.php,
              la ligne
              Code PHP:
              protected $_context 'com_content.article'
              devrait être modifiée en
              Code PHP:
              protected $_context 'com_content.article2'
              Pas de demande de support par MP.
              S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

              Commentaire


              • #8
                Re : article -> "Type de mise en page" ne fonctionne pas

                Salut tout le monde,

                Effectivement, le fait que ce soit le template de l'élément appelant qui soit prioritaire est assez intriguant, car cela rend cette option quasi inutilisable.
                On peut aussi dans les options d'une catégorie définir un layout pour la mise en page, je n'ai pas encore essayé, mais peut-être que ça a une répercussion sur l'affichage des articles de cette catégorie.

                Bref, pour pouvoir enfin utiliser cette fonctionnalité qui reste je pense quand même assez utile, j'ai simplement inversé la priorité entre la mise en page de l'article et celle de l'élément appelant.
                Dans le fichier view.html.php, ligne 62 (merci webcrea , j'ai inversé la condition.
                if (!$active) {

                Maintenant, chaque article utilise bien la mise en page renseignée dans ses options. ça a l'air de fonctionner correctement.


                @jisse : du coup je n'ai pas besoin de créer un autre MVC, je n'ai besoin de personnaliser que la vue. Cela dit, je n'ai toujours pas réussi à me servir de cette deuxième vue article2. Juste pour info et par curiosité, comment faut-il faire après avoir suivi tes consignes pour pouvoir utiliser sur tel ou tel article la vue article2 ? Faut-il faire une archive des fichiers modifiés et installer ensuite tout ça dans joomla ?

                Commentaire


                • #9
                  Re : article -> "Type de mise en page" ne fonctionne pas

                  Envoyé par Dibi Voir le message
                  @jisse : du coup je n'ai pas besoin de créer un autre MVC, je n'ai besoin de personnaliser que la vue. Cela dit, je n'ai toujours pas réussi à me servir de cette deuxième vue article2. Juste pour info et par curiosité, comment faut-il faire après avoir suivi tes consignes pour pouvoir utiliser sur tel ou tel article la vue article2 ? Faut-il faire une archive des fichiers modifiés et installer ensuite tout ça dans joomla ?
                  Normalement, non, rien de spécial, j'ai utilisé cette possibilité sur d'autres composants que com_content.

                  Je testerai sur les articles Joomla! et ferai un retour.
                  Pas de demande de support par MP.
                  S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                  Commentaire


                  • #10
                    Re : article -> "Type de mise en page" ne fonctionne pas

                    Envoyé par Dibi Voir le message

                    Bref, pour pouvoir enfin utiliser cette fonctionnalité qui reste je pense quand même assez utile, j'ai simplement inversé la priorité entre la mise en page de l'article et celle de l'élément appelant.
                    Dans le fichier view.html.php, ligne 62 (merci webcrea , j'ai inversé la condition.
                    if (!$active) {

                    Maintenant, chaque article utilise bien la mise en page renseignée dans ses options. ça a l'air de fonctionner correctement.

                    Tu as réglé le problème pour ce cas précis où tu appelles l'article par une option de menu et que tu veux appliquer la mise en page de ton template personnalisé.

                    Si par la suite tu as besoin de mettre en page un article par le paramétrage dans l'option de menu, cela ne marchera pas et si tu appelles un article hors menu, joomla va tenter d'appliquer une mise en page paramétré dans une option de menu inexistante...

                    Je pense que dans ton cas, le mieux est de shunter le test if (!$active) { et d'appliquer systématiquement ton template

                    ou mieux,

                    de tester s'il y a un layout différent du default après if (!$active) { et de l'appliquer sinon d'appliquer le paramétrage de l'option. Ainsi tu gardes la possibilité de mettre en page via le menu. mise en page qui ne sera appliquer que si l'article a un de type de mise page sur default
                    Christophe
                    http://www.webcrea.fr

                    Commentaire


                    • #11
                      Re : article -> "Type de mise en page" ne fonctionne pas

                      Envoyé par webcrea Voir le message
                      Si par la suite tu as besoin de mettre en page un article par le paramétrage dans l'option de menu, cela ne marchera pas et si tu appelles un article hors menu, joomla va tenter d'appliquer une mise en page paramétré dans une option de menu inexistante...
                      Pourtant, je n'arrive pas à trouver de cas de figure où cela me gênerait.
                      Les options du menu appelant sont bien prise en compte (afficher le titre par exemple), peut importe que l'article soit appelé via un menu ou hors menu, et peut importe la configuration de l'article appelé. Sa mise en page peut être celle par défaut ou la personnalisé, dans les deux cas tout fonctionne correctement.

                      Je ferais d'autres tests mais ça a vraiment l'air d'être parfait comme ça.
                      Je verrais ça dans une semaine environ, d'ici la je suis sur un autre projet.
                      En tout cas merci beaucoup et à la semaine prochaine

                      Commentaire

                      Annonce

                      Réduire
                      Aucune annonce pour le moment.

                      Partenaire de l'association

                      Réduire

                      Hébergeur Web PlanetHoster
                      Travaille ...
                      X