Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva
 

Joomla ha il modulo di Login che presenta un "limite"  quando quest'ultimo viene inserito come item di menu: dopo il login la voce di menu resta login e non logout.

Sarebbe molto più elegante che la voce "Login" del vostro menu cambiasse in "Logout".

dopo aver cercato su internet ed aver trovato decine di soluzioni più o meno eleganti / complesse, mi sono deciso di far fare questo piccolo lavoro al framework javascript jQuery e successivamente a mootols. Di seguito troverete le due versioni.

Le seguenti istruzioni vanno inserite nel file index.php del vostro template prima del tag </head>.

N.B. C'è una limitazione in questo codice : prima di includerlo dovete cercare il vostro corretto "selettore" da utilizzare con mootools o jQuery.


MOOTOOLS

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<!-- Mootools version -->
<REMOVE_ME ?php
	// Replace the text of a tag of the item menu "Login" with "Logout"
	$user =& JFactory::getUser();
	if ( !$user->guest ) {
		echo '<script type="text/javascript">'."\n";
		
		echo "// mootols."."\n" ;
		echo 'window.addEvent("domready", function() {'."\n" ;
		echo '$("li_child_0").getElement("a").set("text", "Logout");';
		echo '})'."\n" ;		
		echo '</script>'."\n";		
	}
?>


JQUERY

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<!-- jQuery version -->
<REMOVE_ME ?php
	// Replace the text of a tag of the item menu "Login" with "Logout"
	$user =& JFactory::getUser();
	if ( !$user->guest ) {
		echo '<script type="text/javascript">'."\n";	
		
		echo 'jQuery(document).ready(function() {'."\n" ;
		echo 'setTimeout(function(){'."\n" ;		
		echo 'jQuery("#li_child_0 a:first").text("Logout");'."\n";
		echo '}, 2000)'."\n" ;
		echo '})'."\n" ;	
		
		echo '</script>'."\n";		
	}
?>


Note sul codice

code descrizione
$user =& JFactory::getUser();
	if ( !$user->guest ) {

Questo parte di codice è in php e serve a capire se abbiamo fatto il login.

Si tratta di codice php con utilizzo di oggetti di joomla.

echo '$("li_child_0").getElement("a").set("text", "Logout");';

Questa è l'unica riga di codice che dovete adattare alle vostre esigenze.

Nel mio caso la voce di menu "Login" con tag <a>  si trovava all'interno dell'ID "li_child_0"

Per scoprirlo ho utilizzato Google Chrome, click destro sul link "Login" e quindi "Ispeziona elemento".

jQuery

Per chi decidesse di utilizzare jQuery è utile darvi un paio di informazioni.

1) E' necessario installare un plugin per jQuery No Conflict 

2) E' stato necessario aggiungere un ritardo di 2000ms prima dell'esecuzione dell'istruzione .text(...)


- have fun -


REFERENCES





DISQUS - Leave your comments here