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