PDA

Zobacz pełną wersję : menu



frater
30-03-2010, 22:14
Witam, następujące pytanie

mam takie menu widoczne dla niezarejestrowanych:

Pozycja 1
Pozycja 2
Pozycja 3
Pozycja 4

co zrobić aby zarejestrowany użytkownik widział tylko:

Pozycja 1
Pozycja 2
Pozycja 3

Pozdrawiam

Robster
31-03-2010, 00:15
Poczytać o podstawach zarządzania Joomla!
Wejdź na wiki i poszukaj, nikt więcej Ci tu nie pomoże.

Bazyl
31-03-2010, 00:27
Sorki @Robster, ale nie mogę się z Tobą zgodzić. :)

@frater: był taki temat gdzieś na forum. Spróbuj znaleźć.

Robster
31-03-2010, 01:35
Wątpię by odnalazł taki temat na forum. Wystarczy wpisać słowo menu do szukajki i dzieją się cuda na kiju. Szybciej będzie jak poczyta o uprawnieniach użytkowników lub/i dodawaniu modułu menu na wiki. Niemniej dla mnie rozwiązanie jest oczywiste i osoba, która założyła (przetestowała) chodź jedną stronę na Joomli powinna takie rzeczy wiedzieć.

A nie zgadzać możesz się ze mną za każdym razem i nie musisz za to przepraszać. To są nasze osobiste zdania i przemyślenia :)

alex51
31-03-2010, 07:24
Wydaje mi się, że zagalopowałeś się nieco @Robster, bo akurat omawiany tu przypadek nie jest z zakresu podstaw Joomla. Byłoby tak, gdyby proszący o pomoc napisał, że chce ograniczyć dostęp do wybranej pozycji menu dla niezalogowanej osoby. Jednak jego problem był taki, że poszukuje on rozwiązania celem zablokowania dostępu dla wybranej pozycji menu dla zalogowanego użytkownika, pozostawiając tą pozycję menu wyłącznie dla "gości". Potwierdzam opinię @Bazyla i dodaję od siebie informację o proponowanym już u nas rozwiązaniu takiego problemu, było ono podane =>TUTAJ (http://forum.joomla.pl/showthread.php?36145-Modu%C5%82-menu-tylko-dla-niezalogowanych&highlight=niezalogowanych).

Robster
31-03-2010, 10:14
Kolejny temat za który dałbym sobie rękę uciąć, okazuje się moją pomyłką. Byłem przekonany, że takie coś można zrealizować tylko dzięki opcją dostępnym w szczegółach pozycji menu, przez zaznaczenie kilku poziomów dostępu, tak jak to jest z ustawianiem wyświetlania modułów.

@frater wybacz mi, mój ewidentny błąd.

frater
31-03-2010, 11:12
@Robster wybaczam Ci

ale niestety to nie jest rozwiazanie, ten sposob działa ale tylko w przypadku ukrycia jakis modułów przed zarejestrowanymi natomiast nie sprawdza sie w ukryciu pozycji w menu

Robster
31-03-2010, 11:47
A może spróbujesz mnie efektywnego sposobu, ale znacznie prostszego. Zwyczajnie zrób 2 moduły z menu, jeden widoczny dla niezarejestrowanych, a drugi dla zarejestrowanych.

frater
31-03-2010, 11:59
nie, raczej nie satysfakcjonuje mnie taki rodzaj rozwiązania...

alex51
31-03-2010, 12:05
@Robster, zauważyłem, śledząc Twoje wpisy, że masz dużą wiedzę, ale ode mnie masz plusa nie za to, tylko doceniam Twoją odwagę cywilną. Szacunek!:)

Robster
31-03-2010, 13:04
@alex51 komplement z twojej strony jest dla mnie wielkim wyróżnieniem. Jednak myślę, że z tą wiedzą to nieco przesadziłeś, zwyczajnie stwarzam pozory :D

@frater do głowy przychodzi mi jeszcze jedno rozwiązanie. Może stworzysz menu poprzez moduł "własny kod HTML". A w jednym z linków, dodasz instrukcję warunkową w php do jego wyświetlania, na podstawie warunku grupy, do której należy użytkownik.
Nie wiem czy z tym modułem i wklejaniem do niego kodu HTML, jest tak jak z klasycznym dokumentem HTML, że można dodać znacznik <?, ale sądzę że tak.

Z drugiej strony, skoro można ukryć linki dla niezarejestrowanych, to można to zrobić także w stosunku do użytkowników zarejestrowanych, wystarczy przerobić odpowiedni plik. Niestety nie mam pojęcia, który jest to plik. Możliwe, że sam go znajdziesz szukając poprzez wątek, do którego link podał @alex51.

marker
08-04-2010, 20:18
Witam,
poszukuję rozwiązania dla tego samego problemu. Czy udało się ostatecznie coś zrobić w tym temacie? Proszę o podpowiedź...

palyga007
08-04-2010, 21:52
Opcja wyświetla się w parametrach systemu przy modyfikacji wybranej pozycji menu.
Sprawdziłem u siebie i działa.
Jednakże proszę o wypowiedź w tej kwestii kogoś bardziej doświadczonego.


\administrator\components\com_menus\models\metadat a\component.xml

Dodanie wpisu:

<param name="guest_only" type="radio" default="0" label="Only for guest visitor?" description="Select YES if you want only for guests to be able to see this menu item. After loging in, it won't be in menu, no matter your're even Super Administrator. NO makes Access Level parameter determinator of access, as in joomla default!">
<option value="0">No</option>
<option value="1">Yes</option>
</param>

W pliku

\modules\mod_mainmenu\helper.php

linia ok 225 zamienić pętle warunkową if else na


//skip adding guest-only menu for registered users
$user =& JFactory::getUser();
$iParams = new JParameter($item->params);
$menu_user = $iParams->def('guest_only', 0);

if ($this->_current) {
if($user->gid && $menu_user){}
else $this->addChild($node, true);
} else {
// sanity check
JError::raiseError( 500, 'Orphan Error. Could not find parent for Item '.$item->id );
}

~linia ok 382, zaraz nad return $data
dodać


$user =& JFactory::getUser();
$menu_user = $iParams->def('guest_only', 0);
if (($menu_user && $user->gid) && $user->gid != 25) {
$data = '';
}

Plik

\modules\mod_mainmenu\legacy.php linia 161 zaraz nad return $txt


$menu_params = new stdClass();
$menu_params = new JParameter($mitem->params);
$user =& JFactory::getUser();
$menu_user = $menu_params->def('guest_only', 0);
if (($menu_user && $user->gid) && $user->gid != 25) {
$txt = '';
}



źródło: http://forum.joomla.org/viewtopic.php?p=2032674#p2032674