Joomla.it Forum
Componenti per Joomla! => Gestione utenti e community => : marcellov 12 Apr 2007, 09:32:18
-
Ciao a tutti, su forum.joomla.org ho trovato un interessantissima discussione in cui viene spiegato come nascondere un modulo (ad esempio un menu) solo agli utenti registrati (se vi è capitato di creare un menu del tipo "iscriviti" avrete notato quanto sia antipatico continuarlo a vederlo anche dopo essersi loggati).
Io che non sono un programmatore l'ho trovato semplicissimo e molto utile, posto qui il link:
http://forum.joomla.org/index.php/topic,114630.msg568882.html
Per chi non conosce l'inglese o non ha tempo, segue la procedura in italiano.
Dunque, l'operazione consta di due piccoli passaggi:
1) Bisogna aprire la cartella /modules nella root ed editare l'xml relativo al modulo che ci interessa (nel mio caso mod_mainmenu.xml), ed inserire il seguente breve codice in qualsiasi punto insieme agli altri param (naturalmente i valori degli attributi label e description possono essere cambiati/tradotti a proprio piacimento):
<param name="show_registered" type="radio" default="1" label="Show Menu When Logged In" description="Show the menu also when a registered user is logged in">
<option value="0">No</option>
<option value="1">Yes</option>
</param>
2) Infine, basta aprire il file /includes/frontend.php e andare alla linea 155, dove c'è il seguente codice:
foreach ($modules as $module) {
$params = new mosParameters( $module->params );
Subito dopo di esso va aggiunto:
// HACK: added code to check if module should be shown when a user is logged in
if (!$params->get('show_registered', 1) && $my->id) {
// simply continue the loop without outputting this module
continue;
}
// --- end HACK ---
Il gioco è fatto. A questo punto andando nel backend, gestione moduli, e selezionando un qualsasi mod_mainmenu, noterete che alla fine della pagina è apparsa un'ulteriore opzione che permette di scegliere se visualizzare o meno il modulo per gli utenti loggati. Semplicemente fantastico.
-
Grazie del tuo utile contributo, penso cha a molti utenti sarà utile
Ciao
-
Ottima cosa!
Ma strutturalmente non mi piace molto mettere mano al core di Joomla, perchè in caso di aggiornamento devi ripristinare tutto ogni volta.
Ma è anche vero la 1.0.12 dovrebbe essere l'ultima release della 1.0.
-
Ho provato a seguire qsta guida... solo ke io vorrei nascondere un mod creato da me... cioè un mod di tipo utente.... dove trovo i file per modificarli?? grazie
-
Sai se è possibile fare in modo che un modulo venga visto solo dall'admin e non dagli altri gruppi?
Grazie 1000
-
metti accesso special ai moduli! ;D
-
Non ho capito.. potresti spiegarmi meglio? ;)
-
Cia ragazzi a me questa guida non funziona (non appare nessuna nuova voce nelle proprietà del modulo), provato gia su mod installate che da installare (modificando l'xml prima di installare)
Come posso fare? ;)
-
Non ho capito.. potresti spiegarmi meglio? ;)
metti accesso special al modulo ;)
-
edit
-
E se metto special in automatico lo vede solo l'admin?
Grazie 1000
-
si Gmarche , cmq siamo offtopic , basta cercare o aprire un altro topic ;)
-
Ok grazie.
Ciao ciao
-
sapere come si deve fare per joomla 1.5? Il file frontend.php non c'è.... ??? ??? ???
-
ma state già passando alla nuova versione? Ma è stabile? Io l'ho installata in locale ma ancora non la uso per i clienti.
Comunque sarebbe utile riuscire ad adattare questo piccolo hack. Se qualcuno ci riesce ce lo fa sapere? Io appena ho un minuto ci provo!
-
Help!!!!
non riesco a modificare il file mod_xxx nella root (Nel mio caso mod_acajoom) percorso= server/website/modules/mod_acajoom.xml
Premetto che ho tutti i permessi di scrittura, utilizzo Filezilla ,e l'errore riportato è "errore trasferimento critico"
Vi Ringrazio in anticipo
Saluti
Mario
-
Ho provato a seguire qsta guida... solo ke io vorrei nascondere un mod creato da me... cioè un mod di tipo utente.... dove trovo i file per modificarli?? grazie
ecco il mio prob :-[
-
Allora ... il problema si presenta con moduli differenti dal mod mainmenu , infatti se leggete qui http://forum.joomla.org/index.php/topic,114630.msg568882.html propne la modifica , che dovrebbe funzuionare con altri mdouli e non creare problemi di spaginazione (ad esempio nel mio template se manca una posizione automaticamente il mainbody si allarga , e con la modifica in evidenza qui si spaginava tutto)
-
grazie marcello sei un grande ho risolto un problema grosso quanto una montagna con questo piccolo hack.. ;) ;)
-
Salve,
da una ricerca che ho fatto c'è un metodo meno invasivo per risolvere il problema, ma purtroppo sto iniziando adesso ad affacciarmi a questo mondo e non ci capisco nulla di codice; sono un neofita... si dice cosi, vero?
Dunque, la soluzione sta nel caricare un estensione chiamata
metamod
http://www.brandonitconsulting.co.uk/mod_metamod/
Se qualcuno lo ha usato e mi da istruzioni in merito, ne sarei molto grato.
Grazie
-
da quel che ho potuto vedere metamod ti permettere di creare dei moduli e di renderli visibili a tutti, solo utenti registrati, solo utenti non registrati, non si interfaccia con i moduli gia presenti quindi nn fa al caso nostro.
-
ottimo grazie
Semplicemente fantastico!! ;D ;D
-
Grazie anche da parte mia
-
per J 1.5 ci sono soluzioni?
-
Salve a tutti, per joomla 1.5 la soluzione è quihttp://forum.joomla.org/viewtopic.php?p=1703898#p1703898 (http://forum.joomla.org/viewtopic.php?p=1703898#p1703898)
In pratica bisogna scaricare e installare Jumi che trovate qui http://extensions.joomla.org/extensions/1023/details (http://extensions.joomla.org/extensions/1023/details)
Andate in "gestione moduli", scegliete il modulo che volete modificare e nel menu a tendina del campo "Posizione" digitate un'etichetta a vostro piacere, per esempio user100, salvate. Create poi un nuovo modulo Jumi, scegliete la posizione e di non mostrare il titolo e nel campo "Code written" digitate il seguente codice:
<?php
$position = 'user100';
$user =& JFactory::getUser();
if($user->guest)
{
$document = &JFactory::getDocument();
$renderer = $document->loadRenderer('modules');
$contents = '';
echo $renderer->render($position, array('style'=>'xhtml'));
}
?>