web-dev-qa-db-fra.com

Existe-t-il une meilleure solution pour afficher les modules uniquement sur la page de liste d'articles (mais pas sur la page d'article)?

Je pense que tous les utilisateurs de Joomla ont rencontré un scénario typique: Vous avez un module sur la page de liste d’articles (comme Catégorie Blog), mais vous ne souhaitez pas que ce module apparaisse également sur la page de contenu de l’article. = Cependant, étant donné que la page d'article hérite de l'item itemid de la page de blog, le module s'affichera également dessus. Selon la documentation de Joomla, vous pouvez créer des éléments de menu masqués pour chaque article afin d'éviter cela, mais je n'aime vraiment pas cette approche, pour deux raisons:

1) C'est un travail pénible si j'ai des centaines d'articles; 2) Le fil d'Ariane serait homepage>article au lieu de homepage>category>article

Je pense que cela remue les utilisateurs de Joomla depuis la version 1.5, maintenant que joomla 3.8.2 est sorti, y a-t-il eu une meilleure approche pour résoudre ce problème? Je connais "Module Anywhere", mais dois-je toujours faire appel à une extension tierce pour résoudre ce problème simple? Si oui, aucune merveille Wordpress est plus dominant.

1
shenkwen

Vous pouvez le faire en utilisant Advanced Module Manager du laboratoire régulier .

Installez-le et activez-le, puis sélectionnez les options suivantes pour les paramètres du module:

Pour les affectations, utilisez Joomla! Contenu, type de page, catégorie de sélection Blog.

Cela vous donnera le module uniquement sur la page de blog de catégorie, mais pas sur les pages de vue d'article séparées.

Succès!

2
Paul Kleingeld

Joomla 3.8.2 n’ajoute aucune solution à votre problème.

Une solution que vous n'avez pas mentionnée serait d'utiliser CSS pour masquer les modules indésirables sur les pages de présentation d'article.

Avantages: Il est facile à mettre en œuvre et, selon la manière dont votre modèle définit ses variables de classe, il est hautement configurable.

Inconvénients: Les modules cachés doivent toujours être construits/rendus par joomla et ajoutés au DOM même s'ils ne seront pas vus/utilisés. Beurk.


Permettez-moi de donner un avis respectueux ici en réponse à vos critiques de Joomla:

Cela peut sembler une évidence d'ajouter au noyau pour vous, mais je n'ai jamais eu besoin d'une telle fonctionnalité et j'utilise Joomla depuis 1,5 jours. Donc, je ne sais pas si c'est vraiment un élément manquant aussi important que vous pourriez le penser.

Qu'est-ce qui ne va pas avec l'installation de la solution d'extension tierce? Pour les installations de Joomla et de Wordpress, il y a plusieurs extensions tierces que j'installe sur à peu près toutes les instances des deux systèmes CMS. Je ne dirais pas que Wordpress Cela semble être une pratique normale pour les deux CMS (et je suppose Drupal est la même chose).

1
Drew G

Cela peut être résolu au niveau du modèle (qui est la manière la plus propre de le faire) comme décrit ici .

Pour l’essentiel, vous devrez modifier le index.php fichier pour inclure une condition permettant de vérifier si la vue actuelle n'est pas une vue d'article, puis ajoutez la balise de module si c'est le cas. Voici un exemple de condition (note: la condition dans l'article lié au blog est différente, mais les deux devraient fonctionner):

$option = JFactory::getApplication()->input->getCmd('option');
$view   = JFactory::getApplication()->input->getCmd('view');
if ($option == 'com_content' && $view == 'category'){
    //add the module tag
}

Cette méthode est la méthode la plus stable.

1
itoctopus