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;
}
}