web-dev-qa-db-fra.com

Comment remplacer automatiquement le modèle pour une liste d'articles dans une catégorie spécifique?

J'ai créé un remplacement pour ma catégorie d'actualités (qui fonctionne parfaitement) et un autre remplacement d'article pour mes articles d'actualité, comme suit

// Category Override
my_template/html/com_content/category/news.php
my_template/html/com_content/category/news_item.php
my_template/html/com_content/category/news_children.php
my_template/html/com_content/category/news_links.php

// Article Override    
my_template/html/com_content/article/news.php

Ma question est la suivante: comment puis-je appliquer (automatiquement) le remplacement d'article (news.php) ci-dessus à tous les articles de la catégorie actualités sans le faire manuellement pour chaque article via "Options de modification d'article" ou globalement via "Options de gestion d'article".

enter image description here

6
Taimur Aziz
  1. Aller au contenu -> Gestionnaire de catégories
  2. Editez votre catégorie
  3. Aller sur l'onglet Options
  4. Attribuez votre mise en page dans l'option "Mise en page alternative".
3
Nagarjun

Je ne pense pas que vous puissiez le faire automatiquement dans Joomla même.

Je voudrais simplement créer une nouvelle mise en page (définie globalement par défaut) qui vérifie l'id de la catégorie de l'article chargé et décide ensuite s'il charge la mise en page par défaut ou la nouvelle.

Un peu hackish et hard-codé mais devrait fonctionner.

3
Bakual

Pour un article, remplacer uniquement les articles d’une catégorie spécifique:
Je suppose que vous pourriez faire quelque chose comme ceci dans / votre_template/html/com_content/article/default.php

if ($this->catid==2) {
    $this->loadTemplate('news');
} else {
    $this->loadTemplate('original');
}

Je n'ai pas testé cela, mais vous obtenez la photo j'espère.

3

Juste une petite mise à jour à ce sujet: depuis Joomla 3.8, on peut directement choisir la mise en page dans le menu> Articles> Blog

Cet élément de menu doit bien sûr être publié, mais il peut être masqué (également une option dans l'élément de menu). Et tous les articles de la catégorie choisie auront la disposition attribuée.

Cool !

2
Woluweb

Si vous pouvez vivre avec un seul élément de menu attaché à chaque article, utilisez-le pour appliquer un nouveau modèle ou un nouveau style.

1
Arlen

J'avais un problème similaire et j'ai obtenu les résultats souhaités en modifiant légèrement une solution de contournement déjà mentionnée ici.

Dans / my_template/html/com_content/article / j'ai des fichiers default.php, default_default.php et default_altered.php. Le default.php décide seulement lequel des autres fichiers est chargé. J'ai testé deux façons de le faire.

Basé sur l'id de la catégorie:

if ($this->item->catid==19) {
  echo $this->loadTemplate('altered');
} else {
  echo $this->loadTemplate('default');
}

Ou basé sur l'id de l'élément de menu actif:

$menuid = JFactory::getApplication()->getMenu()->getActive()->id;
if ($menuid==107) {
  echo $this->loadTemplate('altered');
} else {
  echo $this->loadTemplate('default');
}

Je ne sais pas si c'est une solution idéale (je viens de l'apprendre moi-même), mais cela a fonctionné pour moi. :-)

0
Matej