PDA

Zobacz pełną wersję : Nieklikalna pozycja menu



Jdwind
25-01-2014, 09:43
Dotychczas jeżeli chcieliśmy ustawić nieklikalną pozycję menu wystarczyło wybrać typ pozycji jako Łącze zewnętrzne, w polu odnośnika wpisać "javascript:void(0);" i to działało. O ile dobrze przeczytałem, w Joomla od wersji 3.2 oraz po najnowszej aktualizacji Joomla! 2.5.17 wyłączona została możliwość wpisania kodu "javascript: void(0);", a przynajmniej podczas próby zapisania takiej pozycji wyskakuje komunikat o braku możliwości zapisu. Można oczywiście w polu łącza wpisać #, ale wtedy pozycja staje się klikalna, chociaż nie przenosi nigdzie to jednak przeładowuje stronę. Możemy w zasadzie spróbować to zmienić na dwa sposoby (podaję rozwiązania dla Joomla 2.5.xx) - pierwszy: tworzymy pozycję Łącze zewnętrzne, w polu 'Odnośnik' wpisujemy #, zapisujemy i przechodzimy do phpmyadmin. W tabeli '__menu' w kolumnie 'link' odnajdujemy wpis '#' i zamieniamy go na 'javascript:void(0);', tylko... skoro zostało to zablokowane w samym Joomla! to raczej nie powinniśmy tego robić (chyba, że na własną prośbę). Zamiast tego proponuję zastosować skryp js w szablonie - rozwiązanie drugie:

<script type="text/javascript">
window.addEvent('domready', function(){
var myel = ['li.item-244 > a', 'li.item-296 > a']
$$(myel).each(function(el){
el.addEvent('click', function(e){
e.stop();
});
});
});
</script>
który umieszczamy przed znacznikiem zamykającym '</head>'. Kluczowe znaczenia ma tu tablica:

var myel = ['li.item-244 > a', 'li.item-296 > a']
zamiast tego wpisujemy swoje wartości dla pozycji menu (wpisujemy pomiędzy apostrofy oddzielone przecinkiem) - znajdziemy je za pomocą np. firebug w kodzie naszej witryny. Ponieważ powyższy skrypt działa w mootools, rozwiązanie wymaga aby nasz szablon korzystał z tego frameworka - jeżeli funkcja nie zadziała tutaj http://docs.joomla.org/J2.5:Working_with_Mootools_1.3 pisze, jak to zainicjować w przypadku szablonu. Sprawdzone nawet na IE8, działa bez problemu. Natomiast dla Joomla! w wersji 3.x powinno się użyć raczej jquery zamiast mootools.
Oczywiście możemy użyć typu pozycji menu 'Separator', ale wtedy wypada nam formatowanie pozycji, które musimy poprawić. Natomiast za pomocą powyższej funkcji możemy wyłączyć klikanie dla dowolnych wybranych pozycji menu (ów).

Jdwind
26-01-2014, 03:40
Rozwiązanie dla Joomla 3.2, sprawdzone na szablonie Beez3 (w przypadku innego szablonu proszę sprawdzić, czy jest załadowana biblioteka jQuery):
między znacznikami <head>...</head> wklejamy:

<script type="text/javascript">
jQuery(document).ready(function() {
var elm = ["ul.nav li.item-294 > a","ul.nav li.item-238 > a"];
jQuery(elm).each(function(i){
jQuery(elm[i]).bind('click', false);
});
});
</script>

Jola
26-01-2014, 21:34
Witam,
a co powiesz na łącze zewnętrzne i adres: "#self" ?

:)

Jdwind
26-01-2014, 22:54
O, a tego nie znałem, dzięki :) Właśnie przetestowałem, działa. Moje rozwiązania można co prawda zastosować do dowolnej pozycji menu i nie trzeba się przejmować aliasem w ścieżce, ale #self jest zdecydowanie prostsze jeśli chodzi o samo łącze zewnętrzne, no i nie trzeba grzebać w kodzie.