• Kontakt
  • O systemie
  • Strona główna
Pomoc
  • Założenia systemu
  • Praca z systemem
  • Opcje
  • Szablony
  • Moduły
    • Plik konfiguracyjny
    • Ustawienia modułu
    • Moduły standardowe
      • xbase - Przeglądarka bazy
      • xcart - moduł sprzedaży
      • dbform - Formularze
      • ieditor - Edytor ilustracji
      • adserver - banery
      • rdetails - rekord z bazy
      • sonda
      • abase - Pogrupowana zawartość bazy
  • Edytor HTML
  • E-commerce - sprzedaż online
  • Inne zagadnienia
  • Przykłady rozwiązań

xbase - Przeglądarka bazy

Podstawowy moduł obiektowy do obsługi baz definiowanych w systemie - pobiera porcję lub konkretny rekord ze zdefiniowanej bazy i przekazuje do szablonu.
Moduł reaguje na zewnętrzne zmienne przekazywane w adresie URL, dzięki czemu może działać jako wyszukiwarka, filtrować dane wg wybranych pól, sklejać tabele, sortować.
Moduł posiada wbudowany mechanizm schowka, który pozwala zalogowanym użytkownikom zapamiętywać na stronie wybrane rekordy.
Dzięki specjalnym zmienny zawartym w polu "warunek SQL" ten sam moduł może zachowywać sie różnie w zależności od kategorii, wyników działania innego modułu, rodzaju zalogowanego użytkownika, wersji, itp

Pola w bazie oznaczone jako pola dostępne do przeszukiwania można filtrować wg zmiennych GET w adresie URL:

    
zmienna
tablicowa GET  
przykład  URL
z wirtualnymi katalogami 
przykład URL
bez wirtualnych katalogów 
oprator
działanie 
 eq   /dzial/eq-pole,wartosc.html  page.php?cat=5&eq[pole]=wartosc pole  = 'wartosc'
 lt   /dzial/lt-pole,20.html  page.php?cat=5&lt[pole]=20 pole < 20
 gt   /dzial/gt-pole,10.html  page.php?cat=5&gt[pole]=10 pole > 10
 lteq  /dzial/lteq-pole,10.html page.php?cat=5&lteq[pole]=10pole <= 10
 gteq  /dzial/gteq-pole,10.html page.php?cat=5&gteq[pole]=10pole >= 10
 band  /dzial/band-pole,8.html page.php?cat=5&band[pole]=8pole & 8
 query  /dzial/query-pole,ciag.html page.php?cat=5&query[pole]=ciagpole LIKE '%ciag%'
 eq, eqin
  /dzial/eqin,1,eq-pole,wartosc1:wartosc2.html page.php?cat=5eqin=1,&eq[pole]=wartosc1:wartosc2pole IN ('wartosc1', 'wartosc2')
 ll  /dzial/ll-pole,abcd.html page.php?cat=5&ll[pole]=abcdpole like 'abcd%'
 lr /dzial/lr-pole,abcd.html page.php?cat=5&lr[pole]=abcdpole like '%abcd'
 ym  /dzial/ym-pole,200910.html page.php?cat=5&ym[pole]=200910DATE_FORMAT(pole, '%Y%m') = '200910'

Zmienna query może odwoływać sie do wszystkich pól oznaczonych jako pola do przeszukiwania lub do wybranych jak w powyższej tabeli.

Lista może być sortowana wg domyślnych ustawień lub zgodnie z parametrem zdefiniowanym w URL - zmienne order oraz desc. W zmiennej order należy podać nr pola - zawarty w kluczu __index, np dla pola "nazwa" : {$mod.xbase.fields.nazwa.__index}

zmienna GET   przykład  URL
z wirtualnymi katalogami 
przykład URL
bez wirtualnych katalogów 

działanie 
 order  /dzial/order,4.html page.php?cat=5&order=4sortowanie rosnące dla pola oznaczonego numerem 4
order, desc
  /dzial/order,4,desc,1.html page.php?cat=5&order=4&desc=1pole < 20


Moduł obsługuje również system opisów parametrycznych włącznie z filtrowaniem.

Konfiguracja (zakładka "dodatkowe opcje" w ustawieniach modułu)



wybierz bazębaza z której moduł ma pobierać rekordy
dodatkowe zmiennedodatkowe zmienne dopisane do zapytanie SQL typu SELECT, wymienione po przecinku, mogą to być funkcje zgodne ze składnią SQL, przykład:
(wartosc + vat_kwota ) as suma
CONCAT(A.imie, ' ', A.nazwisko) as osoba
IF ({perms} & 8, 'tak', 'nie') as uprawnienie
warunek sqldodatkowy warunek SQL
Warunek może zawierać zmienne specjalne które zostaną zastąpione przez moduł wartościami wg schematu:
  • {menu.pole_tablicy_category} => $category[$cat][pole_tablicy_category]      
  • {get.nazwa_zmiennej} =>$_GET['nazwa_zmiennej']
  • {level} => $level (pozio menu)
  • {mod.jakas_zmianna.jakies_pole} =>$mod[jakas_zmienna][jakies_pole]
  • {pole_z_bazy_uzyttkownikow}  => wartość pola z bazy użytkowników dla zalogowanego użytkownika
  • {lang} => numer bieżącej wersji językowej
dla zmiennych można definiować również wartość domyślną - przypadku jeśli zmienna nie jest zdefiniowana, np:
  • {mod.xbase.details.pole.value|wartosc_domyslna}
  • {mod.xbase.details.pole.value|0}
grupuj wg polapole wg którego będą grupowane pobrane rekordy (GROUP BY  w MySQL)
dodatkowy joindodatkowy ciąg typu LEFT JOIN ____ ON ____ doklejany do zapytania SQL
pokazuj ze wszystkich kategoriiDomyślnie moduł xBase pokazuje tylko rekordy przypisane do danej kategorii, zaznaczenie tej opcji powoduje że ten warunek nie będzie stosowany
pokazuj również z podkategoriiDomyślnie moduł xBase pokazuje tylko rekordy przypisane do danej kategorii, zaznaczenie tej opcji spowoduje że będą również pobierane rekordy przypisane do podkategorii bieżącej kategorii (cała gałąź)
pokazuj tylko własne rekordyRekordy w bazach zdefiniowanych w systemie posiadają pole "user_id" które zarezerwowane jest na przypisanie rekordu do użytkownika strony. Zaznaczenie tej opcji spowoduje że zalogowany użyykownik zobaczy tylko rekordy przypisane do swojego loginu (a ściślej do ID)
ignoruj status rekordówDomyślnie moduł xBase pokazuje tylko rekordy posiadające wartość pola status = 1, zaznaczenie tej opcji spowoduje że będą również pobierane rekordy z polem status = 0
pokaż zawartosc schowkaZaznaczenie tej opcji spowoduje że będzie pobierana tylko lista rekordów które zalogowany użytkownik dodał do schowka
sprawdzaj schowekZaznaczenie tej opcji spowoduje że moduł będzie sprawdzał czy rekord znajduje się w schowku zalogowanego użytkownika - do listy wyników zostanie dodane pole "in_clipboard" - niezerowa wartość oznacza że rekord jest w schowku
sortuj wg pola (puste - domyślnie)definuje pola wg których ma nasąpiś sortowanie listy.
Jeśli pole to nie zostało zdefiniowane oraz flaga "bez ORDER BY" nie jest zaznaczona moduł wykona dodtkowe zapytanie sprawdzające domyślne ustwienia sorotwania we właściwościch bazy. Przkładowe wartości pola:
A.nazwa, A.date_start DESC
imie, nazwisko
W polu można używać zmiennej {lang} która zostanie zastąpiona wartością liczbową określającą ID bieżącej wersji językowej
pobieraj listę kategorii do tablicyZaznaczenie tej opcji powoduje że  dla każdego rekordu moduł wygeneruje pole o nazwie "catlist" które będzie zawierało tablicę z ID kategorii do których został przypisany rekord
szukaj w polach z tabeli złączonej:Zaznaczenie tej opcji powoduje że przy wyszukiwaniu przy użyciu parametru GET w adresie url o nazwie "query" sprawdzane będą również pola z tabel dołączanych
połącz tebelę wg polaDomyślnie moduł xbase nie dokonuje złączeń wg pola typu typu "relTable" czyli relacji przypisania jednego lub wiecej rekodów z zewnętrznej tabeli do rekordu. Wpisując w tej opcji nazwę takiego pola można wymusić sklejenie tego typu
pobierz dane o autorze rekordu (pola po przecinku)Jeśli to pole zostało wypełnione, następuje sklejenie z tabelą użytkowników wg właściciela rekordu (pole user_id) i pobranie wartości pól wyszczególnionych w tej opcji. Wratości pól zostaną przekazane do wynikó z prefiksem "U_" czyli np "U_imie", "U_login"
porcjaPorcjowanie wyników - limit rekordów, wartość w tym polu ma priorytet przed ustawieniami limitu w kategorii
nazwa zmiennej okreslajacej id rekordu (rid)Domyślnie parametrem GET w adresie url, określającym wskazanie na konkretny rekord jest zmienna "rid", w tym polu możemy zmienić nazwę tej zmiennej
nazwa zmiennej offset przy stronicowaniu (offset)Domyślnie parametrem GET w adresie url, określającym przesunięcie pobieranie rekordów (offset) przy porcjowwaniu jest zmienna "offset", w tym polu możemy zmienić nazwę tej zmiennej
dodatkowy skryptNazwa dodatkowego skryptu dołączanego do modułu umieszczonego w katalogu /modules/ o nazwie [nazwa].inc.php
period fieldokreślenie które pole typu data, będzie uwzględniane przy filtrowaniu wg okresu - przekazywanego w URL w zmiennej GET 'period' określającej liczbę dni która jest odejmowana od daty bieżacej i porównywana operatorem "<=" od daty w polu.
Przydatne do pokazwyanie rekordów "nie starszych" niż X dni
przy wskazaniu na rekord sortuj listę wg pola Określenie parametru ORDER BY dla listy przy wskazaniu na rekord
przy wskazaniu na rekord warunek sql dla listyOkreślenie dodatkowego warunku SQL dla listy przy wskazaniu na rekord
nie pobieraj listy przy wskazaniu na rekordDomyślnie moduł przy wskazaniu na rekord, oprócz zapytania pobrania rekordu wykonuje również pobieranie zawartosci listy - zaznaczenie tej opcji powoduje że lista nie będzie pobierana przy wskazaniu na rekord (bardzo często nie ma takiej potrzeby)
bez ORDER BYzanaczenie tej opcji spoowoduje że do zapytania nie będzie dołączone parametr ORDER BY - czyli tabela będzie nieposortowana wg pola a wg ułożenia rekordów w tabeli SQL - (ALTER TABLE ____ ORDER BY ___) opcja może przyspeszyć działanie zapytania
bez SQL_CALC_FOUND_ROWSzanaczenie tej opcji spoowoduje że do zapytania nie będzie dołączone parametr SQL_CALC_FOUND_ROWS który umożliwia wykonania kolejnego zapytania obliczającego ilosć rekordów - opcja może przyspieszyć działanie zapytania

Zmienne przekazywane do szablonu

Lista rekordów:

  • $mod.xbase.fields - lista pól w bazie
  • $mod.xbase.list - porcja rekordów z bazy
  • $mod.xbase.allrows - całkowita liczba znalezionych rekordów
  • $mod.xbase.query - zapytanie SQL
  • $mod.xbase.error - opis błędu w zapytaniu SQL
  • $mod.xbase.basename - nazwa bazy
  • $mod.xbase.orderdef - domyślne sortowanie wg pola
  • $mod.xbase.descdef - domyślne kolejność sortowania (1 - odwrotne)
  • $mod.xbase.order_params - lista parametrów przekazywanych przez URL - dołączane do linków sortujących
  • $mod.xbase.next - wartość offsetu dla kolejnej porcji
  • $mod.xbase.prev - wartość offsetu dla poprzedniej porcji
  • $mod.xbase.pages - liczba stron - porcji
  • $mod.xbase.thispage - numer bieżącej strony
  • $mod.xbase.offset - przesunięcie
  • $mod.xbase.limit - maksymalna liczba pozycji dla porcji
  • $mod.xbase.navipages - kod HTML - nawigacja między stronami - porcjami
Wskazanie na rekord (zdefiniowana zmienna GET "rid" jako ID rekordu:

  • $mod.xbase.details - przykład: {$mod.xbase.details.nazwa_pola.value} - wartość pola
    Ddatkowe wartości dla ilustracji
    • $mod.xbase.details.nazwa_pola__width.value = szerokość
    • $mod.xbase.details.nazwa_pola__height.value = szerokość
    • $mod.xbase.details.nazwa_pola__type.value = szerokość
    • $mod.xbase.details.nazwa_pola__attr.value = szerokość
  • $mod.xbase.rquery - zapytanie SQL
  • $mod.xbase.error - opis błędu w zapytaniu SQL
  • $mod.xbase.basename - nazwa bazy
  • $mod.xbase.fields - lista pól w bazie
  • $mod.xbase.user - dane właściciela rekordu

Przeglądarka bazy na stronie


  1.  W opcji Administracja -> Ustawienia modułów klikamy na guzik "Dodaj nowy moduł"
    Pierwszą zakładkę formularza wypełniamy tak:



    nazwa zmiennej może być inne - w tym przykładzie używamy zmiennej moja_baza - oznacza to że wyniki działania modułu będą przekazane do szablonu w tablicy  $mod.moja_baza
  2. Klikamy na "Zapisz zmiany" - panel przeładuje się i otworzy się okno "Dodatkowe opcje"


    Wybieramy bazę oraz dla uproszczenia w tym przykładzie - zaznaczamy znacznik "pokazuj ze wszystkich kategorii" - oznacza to że zawartość baza będzie pokazana bez względu na przyporządkowanie kategorii.
    Zapisujemy zmiany
  3. W opcji "Menu" klikamy na guzik "Dodaj nową pozycję w menu"
    w opcji "moduł aktywny w tej kategorii" uaktywniamy nowo utworzony moduł "Moja baza":

    W zakłądce dodatkowe opcje ustawiamy szablon:



    Klikamy na "utwórz kategorię"
  4. Klikamy na "Zatwierdź zmiany" i zatwierdzamy dodanie nowej kategorii
  5. W opcji Wygląd -> Szablony -> towrzy nowy szablon



  6. klikamy na nowo utworzony szablon i wprowadzamy kod szablonu:

    <table class="data">

    <thead>
    <tr>
    <th>ID</th>
    <th>Nazwa</th>
    </tr>
    </thead>

    <tbody>

    {foreach key=lp item=item from=$mod.moja_baza.list}

        <tr>
        <td>{$item.id}</td>
        <td>{$item.nazwa}</td>
        </tr>

    {/foreach}

    </tbody>
    </table>

    {$mod.moja_baza.navipages}

    W powyższym szablonie założono że jedno z pól w bazie nosi nazwę: "nazwa"

  7. pod adresem /moja_baza powinna powinna pojawić się strona z wynikiem, np:



    Jeśli nie pojawił się żaden rekord z bazy należy sprawdzić:
    - status rekordów w bazie
    - prawa dostępu dla rekordu
    - przypisanie do wersji językowej
    - okres publikacji

  8. W powyższym przykładzie nie zostały dołączone nagłówki i menu strony - można je skopiować z pliku "page.tpl" - a powyższy kod wstawić w miejscu wstawiania treści, np plik page.tpl wygląda tak:

    {include file=header.tpl}
    <div id="page">
        {include file=left_menu.tpl}
        <div id="content" {if $menu[1]|@count > 0}class="menu"{/if}>


        {include file=content.tpl}

        </div>
    </div>
    {include file=footer.tpl}

    kopiujemy obszary zaznaczone na czerwono, i wstawiamy do naszego szablonu:

    {include file=header.tpl}
    <div id="page">
        {include file=left_menu.tpl}
        <div id="content" {if $menu[1]|@count > 0}class="menu"{/if}>

    <table class="data">

    <thead>
    <tr>
    <th>ID</th>
    <th>Nazwa</th>
    </tr>
    </thead>

    <tbody>

    {foreach key=lp item=item from=$mod.moja_baza.list}

        <tr>
        <td>{$item.id}</td>
        <td>{$item.nazwa}</td>
        </tr>

    {/foreach}

    </tbody>
    </table>

    {$mod.moja_baza.navipages}


        </div>
    </div>
    {include file=footer.tpl}


    Oczywiście w każdej instalacji kod zaznaczony na czerwono będzie inny.

    po zapisaniu strona wynikowa będzie zawierć nagłówki










Tagi:moduły, xbase, bazy, tutorial

Powered by Actualizer CMS