web-dev-qa-db-fra.com

Remplacer une vue de composant pour un élément de menu spécifique

Comment puis-je remplacer la vue des composants pour un élément de menu spécifique?

Pour un écrasement global, je peux utiliser template/html/com_xxx/.
Mais comment puis-je le faire uniquement pour un élément de menu spécifique?

Exemple:

Joomla! a une vue de blog pour les articles.
Comment puis-je modifier le balisage de cette vue pour un élément de menu spécifique et conserver le balisage par défaut des autres éléments de menu liés à la même vue de blog?

6
Fedik

Méthode 1:

Utilisez la classe CSS pour que cela fonctionne comme vous le décrivez.

  1. Ajoutez la classe à l'élément de menu (dans l'onglet d'affichage de la page, écrivez-la dans le champ "Classe de page"). Exemple: "special-page" (notez l'espace avant la classe de page, sans elle, il sera ajouté à la sortie du composant). Je recommande d'utiliser une classe qui peut être utilisée dans plusieurs situations.
  2. Au remplacement, vous devez écrire le "filtre".

    if(strpos($this->pageclass_sfx, ' special-page') !== false) {
        $templateA = true;
    }
    
    if($templateA){
    (put your customized override here)
    }
    

Méthode 2:

Utilisez un modèle de remplacement pour la vue!

  1. Dans votre dossier HTML des substitutions, dupliquez la vue souhaitée (par exemple, la vue de l'article), vous devez le renommer et disposer du fichier .xml avec les paramètres (copiez-le à partir des vues du composant et assurez-vous que le fichier .xml a le même nom que la vue annulée!).

    exemple: créez une vue remplacée de l'article, appelons-le "spécial", vous devrez copier le default.php dans votre dossier HTML de votre modèle (et placez-le dans la structure de dossiers suivante: com_content/article/ et le renommer en special.php). N'oubliez pas le fichier .xml (que vous devez copier et même adapter si nécessaire) dans le même dossier que le remplacement et renommez-le en special.xml

    Mettez à jour la vue avec le code/style annulé, etc.

  2. Ensuite, accédez à l'élément de menu et remplacez-le par le nouveau type de menu (sous articles, choisissez special), testez-le!
4
jackJoe

Solution générale:

Pour chaque élément de menu, vous pouvez choisir un modèle à appliquer à la page liée afin de dupliquer votre modèle et de créer votre remplacement de vue dans le modèle dupliqué.

Vous pouvez ensuite choisir le modèle dupliqué dans les paramètres de votre élément de menu et le remplacement ne sera effectif que pour cet élément de menu.

avec K2:

Pour votre exemple, vous pouvez utiliser K2. Avec celui-ci, vous pouvez créer plusieurs remplacements de vue avec des noms différents.

Les dérogations ressemblent à ceci:

template_name/html/com_k2/override_1
                         /override_2
                         /...

Ensuite, lorsque vous choisissez un élément K2 dans vos paramètres de menu, vous pouvez choisir le remplacement à lui appliquer sur cette page spécifique. Cela évite de créer plusieurs modèles.

3
web-tiki