VirtueMart – modyfikacja paginacji

Facebooktwittergoogle_plusredditpinterestlinkedintumblrmailFacebooktwittergoogle_plusredditpinterestlinkedintumblrmail

Budując sklep internetowy oparty o komponent VirtueMart wielokrotnie napotykałem na konieczność modyfikacji paginacji. Poniżej przedstawiam wam trzy rozwiązania tego zagadnienia.

Problem: W każdej kategorii mam tylko kilka produktów, wiec paginacja wyświetlająca się już przy dwóch produktach jest zupełnie niepotrzebna.

Rozwiązanie:
Otwieramy plik shop.browse.php znajdujący się w katalogu: administrator/components/com_virtuemart/html. Idziemy na sam koniec szukając tego kodu:

if ( $num_rows > 1 ) {
$browsepage_footer = $tpl->fetch( 'browse/includes/browse_pagenav.tpl.php' );
$tpl->set( 'browsepage_footer', $browsepage_footer );
} else {
$tpl->set( 'browsepage_footer', '' );
}

Następnie wykomentuj ten kod np za pomocą znaków „//”.

Problem: W niektórych kategoriach mam tylko kilka produktów, w innych zaś więcej. Chciałbym żeby paginacja pojawiała się tylko przy większej ilości produktów.

Rozwiązanie:
Otwieramy ten sam plik, który modyfikowaliśmy w powyższym przykładzie i idziemy do tej samej linii kodu. Przypuśćmy, że mamy w kategorii produktów pogrupowane po trzy w jednym rzędzie i chcemy by paginacja pojawiała się już przy 9 produktach. Zamieniamy powyższy kod na:

if ( $num_rows > 3 ) {
$browsepage_footer = $tpl->fetch( 'browse/includes/browse_pagenav.tpl.php' );
$tpl->set( 'browsepage_footer', $browsepage_footer );
} else {
$tpl->set( 'browsepage_footer', '' );
}


Problem:
Chcemy zmienić liczby dostępne na rozwijanej liście wyboru w paginacji. Zamiast domyślnych 5, 10, 15, 20, 25, 30, chcemy mieć 15,30,45 i maksymalnie 100 produktów do wyświetlenia.

Rozwiązanie:Otwieramy plik pageNavigation.class.php znajdującym się w katalogu administrator/components/com_virtuemart/classes i idziemy do poniższego kodu znajdującego się prawie zaraz na początku.

for ($i=5; $i <= 30; $i+=5) {
if (empty( $link)) {
$limits[$i] = $i;
} else {
$limits[vmRoute($link.'&limit='.$i)] = $i;
}
}

Zmieniamy ten kod na:

for ($i=15; $i <= 100; $i+=15) {
if (empty( $link)) {
$limits[$i] = $i;
} else {
$limits[vmRoute($link.'&limit='.$i)] = $i;
}
}

Dawid Ogłaza

Z wykształcenia grafik i historyk, a obecnie student ASP. Projektuję, koduję, tańczę i rysuję, Do tego uzależniony od sportu, musli i zielonej herbaty.

More Posts - Website

  • Kris

    fajne info. Dzięki

    Jak najwięcej Tipsów z VM i Joomla

    chętnie poczytam i kliknę w reklamę 🙂
    pozdrawiam

  • Paweł

    Witam!

    Przydatne informacje!

    Ale mam troche inny problem, chce zeby domyslnie wyswietlało po 1 produkcie w rzedzie(do ustawienia w administracji) i 4 rzedy maksymalnie (potem paginacja).

    Jak ustawić te 4 rzędy?

    Dzięki z góry za pomoc…

    pozdrawiam

  • Witam siedzę własnie w virtuemarcie i zastanawia mnie czy można dodać w paginacji – linkach cyferkach 1,2,3 itd (nazwę kategorii jako title do tego linku?

    w pliku pageNavigation.class.php w katalogu
    administrator/components/com_virtuemart/classes jest funkcja która generuje paginację i w lini 146
    jest kod który to generuje
    $html .= „\nlimit.’&limitstart=’.$page).”\” class=\”pagenav\” title=\””.$category_alias.”\” >$i„;
    dodałem zmienną $category_alias ale niestety nie wyswietla on nic :/
    może jest jakiś sposób aby to zaczęło działać?

    pozdrawiam

  • Witam. Udało mi się zmienić wartości paginacji. Po wybraniu odpowiedniej wartości liczba produktów na stronie się odpowiednio zmienia. Jednak przy pierwszym wejściu na stronę do katalogu produktów w okienku wyboru widoczna jest najmniejsza ustawiona wartość natomiast domyślnie wyświetlają się produkty od 1 do 20. Dopiero po zmianie wartości wszystko wyświetla się poprawnie. Jak zrobić by od początku wyświetlała się prawidłowa ilość produktów?
    oto link do strony: http://phoenixbeauty.ie/index.php?page=shop.browse&category_id=6&option=com_virtuemart&Itemid=54