Zencart tiene la opción de realizar un paginado cuando muestra la lista de productos pero a veces es necesario además un link que muestre todos los productos de una categoría y no usando paginación.
Una opción simple sería aumentar el número máximo de producto para mostrar: configuration/maximun values/Products Listing- Number Per Page
Pero si quisieramos mantener ambas opciones funcionando mediante un link «view all» debemos modificar en nuestro template el archivo templates/tpl_modules_product_listing.php
Buscamos las líneas:
1 2 | <?php if ( ($listing_split->number_of_rows > 0) && ( (PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3') ) ) { ?> |
Y vamos a reemplazarlas por:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php if ( ($listing_split->number_of_rows > 0) && ( (PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3') ) ) { ?> <div> <?php if ($_GET['override'] == 'more') { // Si estamos mostrando todo ponemos un link "Paginate" echo ($listing_split->number_of_rows > MAX_DISPLAY_PRODUCTS_LISTING ? '<a href="' . zen_href_link(FILENAME_DEFAULT, 'cPath=' . $_GET['cPath']) . '">' . 'Paginate Products' . '</a>' : ''); $max_display_products_listing_override = $db->Execute($listing_sql); $max_display_products_listing_override = $max_display_products_listing_override->RecordCount(); $listing_split = new splitPageResults($listing_sql, $max_display_products_listing_override, 'p.products_id', 'page'); } else { // Si estamos paginando mostramos el link "View All" echo ($listing_split->number_of_rows > MAX_DISPLAY_PRODUCTS_LISTING ? '<a href="' . zen_href_link(FILENAME_DEFAULT, 'cPath=' . $_GET['cPath'] . '&override=more') . '">' . 'View All' . '</a>' : ''); } ?> </div> <div id="productsListingTopNumber" class="navSplitPagesResult back"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></div> <div id="productsListingListingTopLinks" class="navSplitPagesLinks forward"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, zen_get_all_get_params(array('page', 'info', 'x', 'y', 'main_page'))); ?></div> <br class="clearBoth" /> <?php } ?> |
Hay un detalle más que tal vez debamos cambiar según nuestra versión de Zencart en el archivo de nuestro template modules/tpl_tabular_display.php
Probablemente en la línea 17, buscamos:
1 | $listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_PRODUCTS_LISTING, 'p.products_id', 'page'); |
Simplemente borramos o dejamos comentada dicha línea
Observaciones
- Si no encuentras dichos archivos en tu template debes copiarlos de la carpeta template_default
- No olvides realizar un backup antes de hacer cualquier cambio
- Si te aparece algun error tipo unexpected Var…. eso significa que te haz comido alguna llave o punto y coma