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".
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.
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.
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 !
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.
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. :-)