PDA

Zobacz pełną wersję : Alfabetyczne sortowanie pozycji w menu



YagAA
06-02-2010, 22:51
Witam,

mam taki problem, że chciałbym uzyskać taki efekt

Menu
a
b
c
d
e
f
...

a jak na razie mam
Menu
b
e
a
c
f
d
...

Czy jest jakaś możliwość, żeby menu się sortowało alfabetycznie ? Jak dodam jakiś nowy artykuł, to żeby nie skakał na koniec, tylko żeby też się sortował, chciałbym, żeby było też tak
a1
a2
a3
..
b1
b2
b3
...
c1
c2
c3
...

ręczne poprawianie raczej nie wchodzi w grę, bo to dużo roboty, codziennie tworzone są nowe menu i jakbym tak miał każde poprawiać, to byłoby trochę czasochłonne.

big_krzysiek
06-02-2010, 23:12
witaj!
nie zalapalem o co ci chodzi...o kolejnosc pozycji menu, czy o kolejnosc artykulow na stronie..?

wg mnie o to drugie...
jesli tak...to zrob sobie kategorie a, b, c...i ustaw sortowanie najpierw wg kategorii, a pozniej wg daty dodania od najnowszych...

YagAA
06-02-2010, 23:19
Chodzi mi właśnie o kolejność pozycji w menu ;-) Tzn mam jakieś tam menu i w tym menu jakieś tam artykuły. Artykuły wyświetlają się ok, a menu zależy od dodania, jak mam dodane już a1,b,c,d i chcę dodać a2 to dodaje mi w takiej kolejności a1,b,c,d,a2 i muszę przesunąć to na górę, żeby było a1,a2,b,c,d . Teraz chyba bardziej zrozumiale ;-)

Jola
06-02-2010, 23:36
Witam,
za sortowanie wszystkich menu (typ modułu mod_mainmenu) odpowiada zapytanie w pliku includes/menu.php linia 46 jest

' ORDER BY m.sublevel, m.parent, m.ordering';zmiana na

' ORDER BY m.sublevel, m.parent, m.name ';spowoduje sortowanie alfabetycznie ale we wszystkich menu.
Żeby ograniczyć do konkretnego menu trzeba pomyśleć nad warunkiem. :)

YagAA
06-02-2010, 23:43
Tylko to nie jest mainmenu, tylko menu utworzone przeze mnie.

moje
06-02-2010, 23:46
A poukładałeś pozycje w menu na zapleczu?

Jola
06-02-2010, 23:49
Sorki - źle się wyraziłam chodziło mi o typ modułu - mod_mainmenu w modułach. Czyli dotyczy wszystkich menu.

YagAA
06-02-2010, 23:54
Ok, chyba się nie zrozumiemy ;-) Mam stronę http://www.seansonline.pl/ , chcę uporządkować seriale alfabetycznie, a nie w jakiej kolejności dodam, w takiej jest. Wiem, że można to zrobić ręcznie przestawiając pozycje w panelu admina, ale szukam jakiegoś narzędzia, które usprawni tą pracę (moduł, skrypt, cokolwiek).

moje
06-02-2010, 23:56
To użyj modułu wyświetlającego sekcje/kategorie.

EDIT:

Standardowo jest w Joomla, zajrzyj na wiki i sprawdż do czego służy zielona ikonka z "+" (u góry po prawje, jak jeszcze sam tego nie odkryłeś) na liście modułów.

Jola
07-02-2010, 00:10
@YagAA - podaję Ci rozwiązanie na tacy - albo mnie ignorujesz albo niedowidzisz.
Nawet nie raczyłeś sprawdzić podanego rozwiązania.
Mogę podać jak zawęzić to sortowanie do wybranego menu ale nie wiem czy warto.

YagAA
07-02-2010, 00:15
jolaass: Nie ignoruję Cię, tak, jak napisałaś, to działa dla wszystkich, a mi zależy na wszystkich, oprócz tego menu na górze. Tam kolejność ma być taka, jaka jest, albo może prościej, tylko kategorie seriali muszą się sortować alfabetycznie, reszta tak, jak jest (kategorie filmów to już sam mogę sobie posortować, bo jest ich mało).

Jola
07-02-2010, 00:39
linia 46 po zmianie

' ORDER BY m.sublevel, m.parent, IF( m.menutype = \'nazwa_menu\', m.name, m.ordering ) ';nazwa_menu to nazwa Twojego menu, które chcesz posortować np. mainmenu lub topmenu

YagAA
07-02-2010, 00:50
Menu główne, seriale, kategorie filmowe to mod_mainmenu, więc we wszystkich się to segreguje.

moje
07-02-2010, 00:53
Jak w zapleczu najedziesz na Menu, to pokazuje Ci się lista pod menu i tam masz nazwy menu.

YagAA
07-02-2010, 01:09
moje: bez komentarza.
jolaass: Seriale się posegregowały, ale reszta menu się rozjechała, tj kolejność jest byle jaka menu i kategorii filmowych.

Jola
07-02-2010, 01:16
Pewnie coś niewłaściwie przekopiowałeś -wystarczy drobny błąd.
U mnie działa wszystko jak należy przy wpisie:

' ORDER BY m.sublevel, m.parent, IF( m.menutype = \'mainmenu\', m.name, m.ordering ) ';Jeszcze pytanie: którą masz wersję mySQL?

YagAA
07-02-2010, 01:32
MySQL to 5.0.89 . Nazwa menu to "seriale" bez cudzysłowów oczywiście. Wklejam więc taką zawartość
' ORDER BY m.sublevel, m.parent, IF( m.menutype = \'seriale\', m.name, m.ordering ) ';

Projektant pozycji menu: [seriale]

Jola
07-02-2010, 01:37
Czy to górne menu i seriale maja przypisaną prawidłową kolejność?

YagAA
07-02-2010, 10:46
Czy to górne menu i seriale maja przypisaną prawidłową kolejność?

A co to znaczy ? ;-)

Jola
07-02-2010, 16:56
Okazało się , że podana przeze mnie modyfikacja nie w każdym wypadku działa poprawnie. :)
Wypróbuj takie rozwiązanie zamiast:

$sql = 'SELECT m.*, c.`option` as component' .
' FROM #__menu AS m' .
' LEFT JOIN #__components AS c ON m.componentid = c.id'.
' WHERE m.published = 1'.
' ORDER BY m.sublevel, m.parent, m.ordering';wstaw:

$sql = '(SELECT m.*, c.`option` as component' .
' FROM #__menu AS m' .
' LEFT JOIN #__components AS c ON m.componentid = c.id'.
' WHERE m.published = 1 AND m.menutype <>\'seriale\''.
' GROUP BY m.menutype, m.ordering)'.
'UNION (SELECT m.*, c.`option` as component' .
' FROM #__menu AS m' .
' LEFT JOIN #__components AS c ON m.componentid = c.id'.
' WHERE m.published = 1 AND m.menutype = \'seriale\''.
' GROUP BY m.menutype, m.name)';

YagAA
07-02-2010, 17:04
Teraz wszystko działa, piwo dla Ciebie ! ;-)