Paginacja w komponencie
Strona 1 z 2 12 OstatniOstatni
Wyniki 1 do 10 z 11

Temat: Paginacja w komponencie

  1. #1
    Przeglądacz
    Dołączył
    12-02-2011
    Wpisy
    51
    Punkty
    11

    Domyślny Paginacja w komponencie

    Witam. Piszę komponent, który będzie wyświetlał listę w zależności od wyszukiwanych parametrów. Mam pytanie w jaki sposób mogę użyć w widoku paginacji takiej jak używa Joomla pomiędzy artykułami - tzn. żebym nie musiał szukać osobnego skryptu. Chciałbym żeby wyświetlało się np. 10 wyników wyszukiwania, a pod spodem pojawiała się paginacja i po kliknięciu na '2' wyświetla się następne 10 wyników.

    Poza tym potrzebne mi będzie użycie sortowania wyników, np. według nazwiska, wieku itd. Czy znajdę takie coś w Joomla abym mógł użyć w moim widoku ? I aby współgrało z paginacją ?

    Pozdrawiam i proszę o pomoc.

  2. Pani Reklamowa
    Pani Reklamowa jest aktywna
    Avatar Panny Google

    Dołączył
    19-08-2010
    Skąd
    Internet
    Postów
    milion
    Pochwał
    setki
  3. #2
    Bywalec danieladrianka awatar
    Dołączył
    02-01-2006
    Skąd
    Lębork
    Wpisy
    462
    Punkty
    128

    Domyślny

    paginacja (stronicowanie) jest standartowo dostępne w api joomla! - klasa Jpagination
    Podobnie jest z sortowaniem (a także filtrowaniem) tabelarycznych danych
    Niestety temat jest zbyt obszerny by ci go przedstawiać w poście
    Musisz nieco poszukać i poczytać na ten temat.
    Szukaj także "getUserStateFromRequest"

  4. #3
    Przeglądacz
    Dołączył
    12-02-2011
    Wpisy
    51
    Punkty
    11

    Domyślny

    Dzięki za odpowiedź. Mam jeszcze jedno pytanie. Mianowicie jest wyszukiwarka. Przesyłam za jej pomocą informacje jakie kategorie ma wyszukiwać i pojawiają się wyniki według danego filtra ustalonego na podstawie ustawień wyszukiwania. Wszystko w porządku, jednak gdy wcisnę, któryś z numerków paginacji to pojawiają się wszystkie 'pages' tak jakby nie było filtra. W sumie to dosyć oczywiste, bo cała strona jest wczytywana od nowa, a więc filtr jest pusty (bo nie może już pobrać danych z $_POST, bo tych danych po prostu nie ma, jeśli nic nie wyszukiwałem, a jedynie zmieniłem 'page'). Męczę się z tym już cały dzień, próbowałem ciasteczkami itd., ale już nie wiem.. Co zrobić aby po zmianie strony (czyli wciśnięciu np. na 2,3 lub 4) filtr pozostawał ten sam ?

    P.s. Co do sortowania, jeśli ktoś byłby w stanie, czy mógłby podać klasę Joomla!, w której jest ta funkcja ?

    Pozdrawiam.

  5. #4
    Bywalec malkowitch awatar
    Dołączył
    26-02-2008
    Skąd
    Warszawa
    Wpisy
    500
    Punkty
    96

    Domyślny

    To wygląda jak by gubił dane z sesji - to w niej są zapisywane te dane w domyślnym komponencie Joomla.

  6. #5
    Przeglądacz
    Dołączył
    12-02-2011
    Wpisy
    51
    Punkty
    11

    Domyślny

    Tak więc w jaki sposób mogę te dane zapisać/odczytać z sesji ? Jak na razie wprawdzie nie mam nigdzie linijki za to odpowiedzialnej. Chyba, że Joomla robi to automatycznie ?

    Chodzi mi mniej więcej o to żeby po wysłaniu danych z formularza były one zatrzymywane i brane pod uwagę aż do momentu kiedy wyszukam je ponownie (wtedy dopiero stare zostaną nadpisane nowymi).

  7. #6
    Bywalec malkowitch awatar
    Dołączył
    26-02-2008
    Skąd
    Warszawa
    Wpisy
    500
    Punkty
    96

    Domyślny

    Jeśli korzystasz z budowanego komponentu Joomla to powinien on domyślnie takie dane trzymać.
    Zajrzyj może tutaj: /components/com_search/models/search.php

    W tym modelu znajduje się kod odpowiedzialny za wyszukiwanie i zapisywanie parametrów wyszukiwania.
    Ale na twoim miejscu sprawdził bym czy może nie są uszkodzone pliki komponenty com_search czyli polecam ich nadpisanie świeżymi.

  8. #7
    Przeglądacz
    Dołączył
    12-02-2011
    Wpisy
    51
    Punkty
    11

    Domyślny

    A nie nie, nie zrozumieliśmy się do końca Ja zrobiłem moduł w formie formularza, w którym wybieram sobie poszczególne opcje i wysyłam metodą POST. I chodzi mi o to żeby te opcje (na podstawie których wyświetlane są wyniki) były przetrzymywane do momentu gdy wyszukam jeszcze raz.

  9. #8
    Wiarus neo_fox awatar
    Dołączył
    21-09-2006
    Skąd
     neos-mac:~ neo$ /Users/neo/
    Wpisy
    1 360
    Punkty
    63

    Domyślny

    Polecałbym:
    http://api.joomla.org/Joomla-Framewo...ateFromRequest

    Kod PHP:
    JFactory::getApplication()->setUserState$key$value ); 
    A potem:

    Kod PHP:
    JFactory::getApplication()->getUserStateFromRequest$key$request$default$type ); 

  10. #9
    Bywalec malkowitch awatar
    Dołączył
    26-02-2008
    Skąd
    Warszawa
    Wpisy
    500
    Punkty
    96

    Domyślny

    Hmm. Rozumiem więc, że piszesz komponent i moduł do tego dedykowany.

    W takim razie musisz zapisywać w komponencie dane w sesji. Tym bardziej powinieneś zainteresować się plikiem który Ci podałem bo tam jest dobry przykład:
    Kod PHP:
    function __construct()
        {
            
    parent::__construct();

            global 
    $mainframe;

            
    //Get configuration
            
    $config JFactory::getConfig();

            
    // Get the pagination request variables
            
    $this->setState('limit'$mainframe->getUserStateFromRequest('com_search.limit''limit'$config->getValue('config.list_limit'), 'int'));
            
    $this->setState('limitstart'JRequest::getVar('limitstart'0'''int'));

            
    // Set the search parameters
            
    $keyword        urldecode(JRequest::getString('searchword'));
            
    $match            JRequest::getWord('searchphrase''all');
            
    $ordering        JRequest::getWord('ordering''newest');
            
    $this->setSearch($keyword$match$ordering);

            
    //Set the search areas
            
    $areas JRequest::getVar('areas');
            
    $this->setAreas($areas);
        } 
    Kod PHP:
    $this->setState('nazwa_zmiennej','wartosc'
    - ustawia pewną wartość w sesji (dla ciebie powinien to być parametr wyszukiwani)

    Kod PHP:
    $mainframe->getUserStateFromRequest(...) 
    - pobiera wartość wybranej zmiennej z POST/GET, jeśli brakuje jej to pobiera jej wartość z sesji czyli statusu który zapisany był wcześniej funkcją podaną wcześniej.

    Krótką mówiąc, jeśli przesłano przez POST/GET wartość to zostanie zapisana w sesji, jeśli nie to pozostanie ta wartość która w sesji się już znajduje.

    Tylko oczywiście do zapytania MySQL musisz zawsze pobierać dane z sesji czyli poprzez:
    Kod PHP:
    $this->getState('nazwa_zmiennej'
    Natomiast jeśli potrzebujesz pobrać dane z sesji wybranego modelu w widoku komponentu w view.html.php to też daj znać

  11. #10
    Przeglądacz
    Dołączył
    12-02-2011
    Wpisy
    51
    Punkty
    11

    Domyślny

    Wielkie dzięki za odpowiedzi. Wreszcie sobie z tym poradziłem. A co do sortowania wyników ? Z tego co wiem jest klasa Joomla! do tego służąca jednak nie za bardzo wiem jak się nazywa i jak jej użyć. Poza tym zastanawiam się co zrobić aby po kliknięciu np. na "Cena" sortowało od najmniejszej do największej, a po ponownym kliknięciu na "Cena" od największej do najmniejszej. Czy może klasa Joomla już sama w sobie zawiera takie rozwiązanie ?

Strona 1 z 2 12 OstatniOstatni

Podobne tematy

  1. k2 i paginacja
    przez omen1989 na forum Artykuły: aktualności, komentarze
    Odpowiedzi: 7
    Ostatni post/autor: 07-01-2013, 22:36
  2. Paginacja
    przez Mati_ na forum Rozszerzenia - problemy z obsługą, zarządzaniem
    Odpowiedzi: 10
    Ostatni post/autor: 07-04-2011, 15:53
  3. Paginacja
    przez norbertson na forum Szablony, wygląd, formatowanie
    Odpowiedzi: 8
    Ostatni post/autor: 23-01-2011, 19:12
  4. Paginacja PhocaGallery
    przez arkasper na forum Różne
    Odpowiedzi: 1
    Ostatni post/autor: 25-05-2010, 18:34
  5. paginacja
    przez grzegorz21 na forum Administracja - ogólne
    Odpowiedzi: 3
    Ostatni post/autor: 14-12-2009, 06:52

Reguły pisania

  • Nie możesz zakładać nowych tematów
  • Nie możesz dodawać wypowiedzi
  • Nie możesz dodawać załączników
  • Nie możesz poprawiać swoich postów
  •