PDA

Zobacz pełną wersję : Jak zrobić pozycję menu, która po jednym kliknieciu wylogowuje? Dotyczy !J2.5 i 3.*



Jola
14-01-2014, 17:58
Joomla oferuje typ pozycji menu logowanie, która prowadzi do komponentu com_users. Czyli aby się wylogować należy dwa razy kliknąć.
Podam rozwiązanie, które uprości wylogowanie do jednego kliknięcia w odnosnik w menu.
1. W wybranym menu tworzymy nową pozycję menu, nadajemy tytuł np. Wyloguj, przypisujemy do typu pozycji menu: łącze zewnętrzne, wpisujemy Łącze: index.php?akcja=logout , ustawiamy dostęp: Registered.
2. Otwieramy plik: modules/mod_menu/tmpl/default_url.php (lub odpowiednik w szablonie jeśli szablon korzysta z nadpisywania szablonem), odszukujemy linię 29:

?><a <?php echo $class; ?>href="<?php echo $flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
zamiast niej wstawiamy:

if(preg_match('/akcja=logout/', $flink)){ ?>
<form id="login" action="<?php echo JRoute::_('index.php?option=com_users&task=user.logout');?>" method="post" name="login">
<input type="hidden" name="return" value="<?php echo base64_encode('index.php?Itemid=310');?>">
<?php echo JHtml::_('form.token'); ?>
<a <?php echo $class; ?>href="#self" onclick="document.getElementById('login').submit();" <?php echo $title; ?>><?php echo $linktype; ?></a></form>
<?php }
else{
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
}Zwracamy szczególną uwagę na wpis:

<?php echo base64_encode('index.php?Itemid=310');?>zwłaszcza na Itemid=310, bo liczba 310 (przykładowa) określa ID pozycji menu strony, na którą zostanie przekierowany wylogowujacy się użytkownik -czyli należy wpisać własny Itemid.
Zapisać plik stosując nadpisywanie szablonem (koniecznie- ponieważ aktualizacja nadpisze taką zmianę).
I już :)
Ten sposób umożliwia prostą modyfikację dla witryn, które wykorzystują wbudowany w Joomla moduł mod_menu. Jeśli szablon korzysta z własnego modułu taka modyfikacja nie zadziała.