Joomla.it Forum
Joomla! 3 => Joomla! 3 => : danielecr 19 Oct 2017, 17:17:33
-
Ciao a tutti,
impostando il nuovo router in joomla 3.8.1 non riesco a caricare alcuni moduli nella pagina di errore (error.php) del template beez3, che ho modificato.
Questo menu viene caricato:
<?php $module = JModuleHelper::getModule('menu'); ?>
<?php echo JModuleHelper::renderModule($module); ?>
Anche questo menu viene caricato:
<?php
$lang = JFactory::getLanguage();
$result = $lang->getTag();
if ($result=="it-IT") {
$module = JModuleHelper::getModule('menu', 'Menu');
echo JModuleHelper::renderModule($module);
}
else {
$module = JModuleHelper::getModule('menu', 'Menu laterale eng');
echo JModuleHelper::renderModule($module);
}
?>
Lo slideshow invece non viene caricato:
<?php
$lang = JFactory::getLanguage();
$result = $lang->getTag();
if ($result=="it-IT") {
$module = JModuleHelper::getModule('slideshowck', 'Slideshow CK it');
echo JModuleHelper::renderModule($module);
}
else {
$module = JModuleHelper::getModule('slideshowck', 'Slideshow CK');
echo JModuleHelper::renderModule($module);
}
?>
E nemmeno questo modulo nel footer viene caricato:
<?php
$lang = JFactory::getLanguage();
$result = $lang->getTag();
if ($result=="it-IT") {
$module = JModuleHelper::getModule('custom', 'Footer_pers_ridotto');
echo JModuleHelper::renderModule($module);
}
else {
$module = JModuleHelper::getModule('custom', 'Footer_pers - eng - ridotto');
echo JModuleHelper::renderModule($module);
}
?>
Con il router tradizionale invece si visualizzano tutti..qualcuno ha idea del perchè non vengano visualizzati con il nuovo router?
-
Bho..non ne vengo a capo, per ora ho aperto un issue su github, vediamo se è un problema solo mio almeno.
Tutti i menu vengono processati correttamente, non funzionano tutti gli altri moduli solo con il nuovo router.
-
Pare che sia un bug.
Qui il link alla discussione github:
https://github.com/joomla/joomla-cms/issues/18369
Il problema si presenta solo con il nuovo router e solo se il modulo è assegnato a specifici menu.
Un workaround per ora è quello di creare il modulo non assegnando la posizione e assegnarlo a tutte le pagine, per poi richiamarlo con getModule() e visualizzarlo con renderModule().
-
Pare che sia un bug.
Qui il link alla discussione github:
https://github.com/joomla/joomla-cms/issues/18369 (https://github.com/joomla/joomla-cms/issues/18369)
L'ho letto. Però non capisco se è un problema che riguarda solo beez e protostar.
Ciao.
-
Secondo me no, è un problema più generale, e probabilmente riguarda più il getModule che il renderModule. A parte il richiamarlo dall'error.php potrebbe essere un problema se viene usato in estensioni.
-
ma usando un ide di sviluppo tipo netbeans e andando su getModule da dei suggerimenti?
-
Non ho provato, ma l'ultima risposta su github di csthomas sembra chiarire abbastanza bene la causa di ciò che accade:
Experimental routing does not set any Itemid on page /whatever and return 404 URL invalid but stable routing set Itemid to home page and return 404 Article not found.
As we know Joomla loads (for not yet patched error.php in beez3) modules based on menu item.
If menu item is null or 0 then Joomla will loads only modules with assignment to all pages or to IIRC except selected.
If there is no search module enabled for supplied Itemid then the module will not be displayed. And the issue is about this (when experimental routing does not set Itemid to home page).
The other way is: If you try to load module by name with prefix 'mod_' as in #18375 then Joomla creates dummy object of module and executes module with empty/default settings.
For mod_custom this may do not work because if Joomla does not find any module (using Itemid) then creates dummy object with empty text and empty parameters.
Module custom with empty text is useless. Some other modules also could have a problem to display content without parameters from db.
-
Secondo me no, è un problema più generale, e probabilmente riguarda più il getModule che il renderModule. A parte il richiamarlo dall'error.php potrebbe essere un problema se viene usato in estensioni.
beh, rifaranno il router ...
Non tutti i template hanno quel pezzo di codice in error.php
[<?php $module = JModuleHelper::getModule('menu'); ?>
<?php echo JModuleHelper::renderModule($module); ?>].
Favourite per esempio non ce l'ha.
Sei un eroe ad esaminare joomla senza un ide :)
Ciao!