it-swarm-eu.dev

PHP: controlla se un modulo è visualizzato nella pagina corrente

Sto riscontrando dei problemi con la verifica se un modulo è visualizzato nella pagina corrente.

Ho provato diversi approcci con i metodi JModuleHelper, ad esempio isEnabled, ma funziona solo con tipi di modulo e non "istanze" di moduli.

Ho anche provato a recuperare il modulo per nome o posizione, ma gli oggetti restituiti non contengono alcuna informazione su quali voci di menu sono assegnate a questo modulo.

Ho anche considerato di recuperare l'oggetto della voce di menu o l'oggetto dell'articolo (sto verificando questo da un override del layout dell'articolo ~ com_content) ma non sono riuscito a trovare alcuna informazione che possa aiutarmi in questo.

In poche parole: devo verificare se un modulo è attualmente visualizzato in una vista articolo.

Spero che qualcuno possa aiutarmi con questo. Grazie!

1
demi

Dopo aver trascorso un po 'di tempo a controllare questo all'interno del componente dell'articolo, ho appena rinunciato e ho adottato un altro approccio.

Ora sto effettivamente controllando se il modulo è caricato, all'interno del file index.php.

Ecco lo snippet che alla fine ho usato per fare questo lavoro:

$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;
        }
    }
}

Carico i moduli in base alla posizione utilizzando il metodo JModuleHelper::getModules('position_name'), quindi controllo se alcuni moduli in quella posizione hanno una voce di menu assegnata con lo stesso ID dell'ID della voce di menu corrente.

Si noti che funziona dal modello index.php E potrebbe causare problemi da qualche parte all'interno del componente dell'articolo o di altri componenti.

Spero che aiuti chi ha problemi simili!

1
demi