web-dev-qa-db-fra.com

PHP: Vérifie si un module est affiché sur la page en cours

J'ai des problèmes pour vérifier si un module est affiché sur la page en cours.

J'ai essayé différentes approches avec les méthodes JModuleHelper, par exemple isEnabled, mais cela ne fonctionne qu'avec des types de modules et non des "instances" de modules.

J'ai également essayé d'extraire le module par son nom ou sa position, mais les objets renvoyés ne contiennent aucune information sur les éléments de menu affectés à ce module.

J'ai également envisagé d'extraire l'objet article de menu ou l'objet article (je vérifie cela à partir d'un substitut de mise en page d'article ~ com_content), mais je n'ai trouvé aucune information susceptible de m'aider à résoudre ce problème.

En termes simples: je dois vérifier si un module est actuellement affiché dans une vue d'article.

J'espère que quelqu'un pourra m'aider avec ça. Merci!

1
demi

Après avoir passé quelque temps à vérifier cela dans le composant article, j'ai juste abandonné et pris une autre approche.

Maintenant, je vérifie actuellement si le module est chargé, dans le fichier index.php.

Voici l'extrait de code que j'ai utilisé à la fin pour faire ce travail:

$app = JFactory::getApplication();
$menu = $app->getMenu()->getActive();
$mod_loaded = false;
$_mods = JModuleHelper::getModules('mymoduleposition');
foreach ($_mods as $key => $mod) {
    foreach ($mod->advancedparams->conditions["menuitems_selection"] as $_key => $_menu_item) {
        if ($_menu_item == $menu->id) {
            $mod_loaded = true;
        }
    }
}

Je charge des modules par position à l’aide de la méthode JModuleHelper::getModules('position_name'), puis vérifie si un des éléments de cette position se voit attribuer un élément de menu avec le même ID que l’ID de l’élément de menu actuel.

Notez que cela fonctionne à partir du index.php Du modèle et peut causer des problèmes quelque part dans le composant article ou d'autres composants.

J'espère que cela aide ceux qui ont des problèmes similaires!

1
demi