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