sortowanie stron wg ID - jak?

jankesmj

Avatar: jankesmj

2012-02-29 15:23

witam! jak i gdzie zakodować sortowanie stron wg. ID - od największej ID na górze. Dodawanie wielu artykułów/aktualności jako podstrony rodzi wiele pracy do każdorazowego wpisywania numery pozycji strony. Pytanie jak zakodować QCms aby sortował podstrony wg. ID przy założeniu że każda ma numer pozycji standardowy czyli 0, a dodatkowo można by używać numeru pozycji np. aby tymczasowo przykleić news na samej górze dodając numer pozycji jako -1.

» Quick.Cms v3.x

www.jankes.noskow.info

treewood (OpenSolution)

Avatar: treewood

2012-02-29 18:08

jankesmj - pobierz sobie dodatek simpleNews do wersji v3.x i tam masz przyklad jak zrobic takie sortowanie.

Chyba, ze chcesz by WSZYSTKIE strony byly sortowane i zapisywanie wg id ?

jankesmj

Avatar: jankesmj

2012-03-01 11:15

tam masz przyklad jak zrobic takie sortowanie


jednak tu wymiękam, nie jestem tak dobry w php - pomocy ;)

by WSZYSTKIE strony byly sortowane i zapisywanie wg id 


a jeżeli Wszystkie to dodatkowe ustawienie nr pozycji będzie działać?

... ja bym poprosił o rozwiązanie dla Wszystkich stron - największe ID jako pierwsze

treewood (OpenSolution)

Avatar: treewood

2012-03-01 14:59

Wyjasnij mi jakby miala pozycja dzialac skoro posortowane sa po id? :)

Edytuj db/_pages.def.php i zmien
$aFieldsSort = Array( 'iPosition', 'sName', 'sNameTitle', 'sNameUrl', 'iPage', 'iPageParent', 'sDescriptionShort', 'iStatus', 'iType', 'iSubpagesShow', 'iProducts' );

na to:
$aFieldsSort = Array( 'iPage', 'iPosition', 'sName', 'sNameTitle', 'sNameUrl', 'iPageParent', 'sDescriptionShort', 'iStatus', 'iType', 'iSubpagesShow', 'iProducts' );

A nastepnie (poniewaz chcesz miec to posortowane od najwiekszego id do najmniejszego) edytuj core/pages-admin.php i zmien:
$oFF->save( DB_PAGES, $aForm, $sParam, 'sort' );

na to:
$oFF->save( DB_PAGES, $aForm, $sParam, 'rsort' );

Oraz to:
$oFF->save( DB_PAGES, $aSave, 'iPage', 'sort' );

na to:
$oFF->save( DB_PAGES, $aSave, 'iPage', 'rsort' );

jankesmj

Avatar: jankesmj

2012-03-02 08:40

ok, Twoje rozwiązanie działa.... ale ;)

Wyjasnij mi jakby miala pozycja dzialac skoro posortowane sa po id? :)


... no "pozycja" miałaby działać tak

Dla przykładu... domyślnie skrypt QC sortuje strony wg. alfabetu A-Z 0-9 przy założeniu że we wszystkich "pozycjach" jest 0, natomiast po wpisaniu w "pozycję" danej liczby sortuje: najpierw po numerze "pozycji" a potem wg alfabetu A-Z 0-9.

I teraz przekładając to na sortowanie wg numeru ID:

- warunek pierwszy: domyślne sortowanie wg ID od największego do najmniejszego, przy założeniu że wszystkie strony mają wpisaną "pozycję" 0 (i to działa wg Twojego powyższego rozwiązania znakomicie)

- warunek drugi: po wpisaniu w "pozycję" danej wartości liczbowej - sortuje wg tej wartości: to wtedy jest przydatne do ustawiania kolejności w menu,
np. ustawiam w menu zakładkę/stronę "Aktualności" z pozycją -1 czyli jest na samej górze, następnie do Aktualności dodaję Podstrony, które wszystkie mają w pozycji 0 ale sortują się w ID od największego do najmniejszego - czyli wynik tego że zawsze najnowszy wpis (z największym ID) będzie na samej górze.

treewood (OpenSolution)

Avatar: treewood

2012-03-02 16:22

takie cos dziala ... w Quick.Cms.Ext wiec dziwnym by bylo gdybym podal Ci je na ladzie :)

jankesmj

Avatar: jankesmj

2012-03-02 20:26

hmm... aha... widzisz, nie wiedziałem o tym, że to w płatnej jest :(
tak sobie myślałem o tym i w zasadzie wystarczyłoby przerobić sortowanie z "alfabetycznego" A-Z 0-9 na sortowanie po "ID" malejącą, a pozycjonowanie numerami powinno zadziałać jako drugi warunek

a może ktoś się podzieli sposobem na jankesmj@o2.pl :) tak żeby nie naruszać licencji na forum ;)

djavid

Avatar: djavid

2012-07-20 12:40

Mam nadzieję że nie złamię tym regulaminu ale nawet dziecko zauważy jak zrobić aby w pierwszej kolejności sortowanie było po nadanej pozycji a gdy wszystkie mają "0" po ID strony od najwyższego do najmniejszego.

Wszytko należy zmodyfikować tak jak zalecił ~treewood z wyjątkiem:

$aFieldsSort = Array( 'iPosition', 'sName', 'sNameTitle', 'sNameUrl', 'iPage', 'iPageParent', 'sDescriptionShort', 'iStatus', 'iType', 'iSubpagesShow', 'iProducts' );

którą to linię zamieniamy na:

$aFieldsSort = Array( 'iPosition', 'iPage', 'sName', 'sNameTitle', 'iPageParent', 'sDescriptionShort', 'iStatus', 'iType', 'iSubpagesShow', 'iProducts', 'sTags', 'iTime', 'iRss', 'iAdmin', 'iAuthorized' );

I po sprawie.

jankesmj

Avatar: jankesmj

2013-09-06 11:50

w wersji 5.2 Quick.CMS aby posortować podstrony od najnowszej na górze w pliku /core/pages.php w funkcji listSubpages (około linii 248) zamienić (w około linii 261)

$iCount = count( $aPages );
$content= null;

na:
$iCount = count( $aPages );
rsort( $aPages );
$content= null;

Do góry
o nas | kontakt