-
Re: "View All" link
I have this working on one site - but now I'm doing a new one and using this again. I must have a setting in the old site that's different in this new one, because no matter how I set the display, it'll only show 12 items.
In my admin area, I have it set to display 12 items max - which it does - but when I use this script and choose "View All", it still only shows 12 items.
Could someone nudge me towards whatever I'm forgetting to do here? :)
-
Re: "View All" link
I tried this but I don't think I had the defines correct. When I did it, it came up with two lines of page 1, 2, 3, 4, etc and two lines of Displaying 1 to 10 (of 34 products)
And when I hit the view all link it took off all my items.
Any idea what I did wrong?
Thanks
-
Re: "View All" link
I was able to get the changes on my site and display everything as expected. The only issue is no matter what option I choose I am always restricted to 9 items. Can you confirm that the following URL would work in 1.3.8a?
/index.php?main_page=index&cPath=53&override=more
Specifically the "override=more" parameter.
:cool:
-
Re: "View All" link
I was able to come up with something using information I found on this forum. For the next person that is looking for a view all option, you can use the follow code and it will work in both category and manufacturer sections.
Replace the following code in tpl_modules_product_listing.php...
Code:
<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>
with...
Code:
<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 if ($max_results < 99)
{
$linkstuff = zen_href_link(FILENAME_DEFAULT, zen_get_all_get_params(array('page', 'info', 'x', 'y'))) . '&viewall=99';
echo '<a href="' . $linkstuff . '">[View all]</a>';
}
echo $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, zen_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></div>
You will also need to modify product_listing.php by adding...
Code:
$lookuptext = array('viewall=99');
foreach($lookuptext as $templut)
{
if(strpos($_SERVER["REQUEST_URI"], $templut)!==false)
{
$max_results = 99;
}
}
at the top of the page after...
Code:
$max_results = (PRODUCT_LISTING_LAYOUT_STYLE=='columns' && PRODUCT_LISTING_COLUMNS_PER_ROW>0) ? (PRODUCT_LISTING_COLUMNS_PER_ROW * (int)(MAX_DISPLAY_PRODUCTS_LISTING/PRODUCT_LISTING_COLUMNS_PER_ROW)) : MAX_DISPLAY_PRODUCTS_LISTING;
I am sure this isn't the best way of doing it but it works for me.
Cal
-
Re: "View All" link
Hi
I want to add a new options on product_listing page. For [view all] which can be next to the page numbers how can i do it. My website is www.yenmax.com Please help
Thanks
-
Re: "View All" link
Not sure if anyone is still maintaining this thread...but I wanted to say I was able to successfully implement the View All link using methods discussed.
It works swimmingly, but have problem with search.
When displaying the results of the search, the View All link is displayed, but it fails because URL for search is different than product info URL.
thoughts?
-
Re: "View All" link
Hey guys.
I'm not going to give you any fancy explainations, I just hacked classes/split_page_results.php to give me a "Show all" button and it works flawlessy. I'm in a short amount of time here but as I'd love to contribute I'm going to paste my split_page_results.php as is.
Code:
<?php
/**
* split_page_results Class.
*
* @package classes
* @copyright Copyright 2003-2006 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
* @version $Id: split_page_results.php 3041 2006-02-15 21:56:45Z wilt $
*/
if (!defined('IS_ADMIN_FLAG')) {
die('Illegal Access');
}
/**
* Split Page Result Class
*
* An sql paging class, that allows for sql reslt to be shown over a number of pages using simple navigation system
* Overhaul scheduled for subsequent release
*
* @package classes
*/
class splitPageResults extends base {
var $sql_query, $number_of_rows, $current_page_number, $number_of_pages, $number_of_rows_per_page, $page_name;
/* class constructor */
function splitPageResults($query, $max_rows, $count_key = '*', $page_holder = 'page', $debug = false) {
global $db;
$this->sql_query = $query;
$this->page_name = $page_holder;
if ($debug) {
echo 'original_query=' . $query . '<br /><br />';
}
if (isset($_GET[$page_holder])) {
$page = $_GET[$page_holder];
} elseif (isset($_POST[$page_holder])) {
$page = $_POST[$page_holder];
} else {
$page = '';
}
if ($page == 'all') {
$this->page_all = true;
$override = $db->Execute($query);
$max_rows = $override->RecordCount();
}
if (empty($page) || !is_numeric($page)) $page = 1;
$this->current_page_number = $page;
$this->number_of_rows_per_page = $max_rows;
$pos_to = strlen($this->sql_query);
$query_lower = strtolower($this->sql_query);
$pos_from = strpos($query_lower, ' from', 0);
$pos_group_by = strpos($query_lower, ' group by', $pos_from);
if (($pos_group_by < $pos_to) && ($pos_group_by != false)) $pos_to = $pos_group_by;
$pos_having = strpos($query_lower, ' having', $pos_from);
if (($pos_having < $pos_to) && ($pos_having != false)) $pos_to = $pos_having;
$pos_order_by = strpos($query_lower, ' order by', $pos_from);
if (($pos_order_by < $pos_to) && ($pos_order_by != false)) $pos_to = $pos_order_by;
if (strpos($query_lower, 'distinct') || strpos($query_lower, 'group by')) {
$count_string = 'distinct ' . zen_db_input($count_key);
} else {
$count_string = zen_db_input($count_key);
}
$count_query = "select count(" . $count_string . ") as total " .
substr($this->sql_query, $pos_from, ($pos_to - $pos_from));
if ($debug) {
echo 'count_query=' . $count_query . '<br /><br />';
}
$count = $db->Execute($count_query);
$this->number_of_rows = $count->fields['total'];
$this->number_of_pages = ceil($this->number_of_rows / $this->number_of_rows_per_page);
if ($this->current_page_number > $this->number_of_pages) {
$this->current_page_number = $this->number_of_pages;
}
$offset = ($this->number_of_rows_per_page * ($this->current_page_number - 1));
// fix offset error on some versions
if ($offset < 0) { $offset = 0; }
$this->sql_query .= " limit " . $offset . ", " . $this->number_of_rows_per_page;
}
/* class functions */
// display split-page-number-links
function display_links($max_page_links, $parameters = '') {
global $request_type;
$display_links_string = '';
$class = '';
if (zen_not_null($parameters) && (substr($parameters, -1) != '&')) $parameters .= '&';
if (!$this->page_all) $display_links_string .= '<a href="' . zen_href_link($_GET['main_page'], $parameters . $this->page_name . '=' . 'all', $request_type) . '" title=" ' . SHOW_ALL_TITLE . ' ">' . SHOW_ALL_BUTTON . '</a> ';
else $display_links_string .= '<a href="' . zen_href_link($_GET['main_page'], $parameters, $request_type) . '" title=" ' . SHOW_PAGEVIEW_TITLE . ' ">' . SHOW_PAGEVIEW_BUTTON . '</a> ';
// previous button - not displayed on first page
if ($this->current_page_number > 1) $display_links_string .= '<a href="' . zen_href_link($_GET['main_page'], $parameters . $this->page_name . '=' . ($this->current_page_number - 1), $request_type) . '" title=" ' . PREVNEXT_TITLE_PREVIOUS_PAGE . ' ">' . PREVNEXT_BUTTON_PREV . '</a> ';
// check if number_of_pages > $max_page_links
$cur_window_num = intval($this->current_page_number / $max_page_links);
if ($this->current_page_number % $max_page_links) $cur_window_num++;
$max_window_num = intval($this->number_of_pages / $max_page_links);
if ($this->number_of_pages % $max_page_links) $max_window_num++;
// previous window of pages
if ($cur_window_num > 1) $display_links_string .= '<a href="' . zen_href_link($_GET['main_page'], $parameters . $this->page_name . '=' . (($cur_window_num - 1) * $max_page_links), $request_type) . '" title=" ' . sprintf(PREVNEXT_TITLE_PREV_SET_OF_NO_PAGE, $max_page_links) . ' ">...</a>';
// page nn button - visa inte om alla sidor visas
if (!$this->page_all) {
for ($jump_to_page = 1 + (($cur_window_num - 1) * $max_page_links); ($jump_to_page <= ($cur_window_num * $max_page_links)) && ($jump_to_page <= $this->number_of_pages); $jump_to_page++) {
if ($jump_to_page == $this->current_page_number) {
$display_links_string .= ' <strong class="current">' . $jump_to_page . '</strong> ';
} else {
$display_links_string .= ' <a href="' . zen_href_link($_GET['main_page'], $parameters . $this->page_name . '=' . $jump_to_page, $request_type) . '" title=" ' . sprintf(PREVNEXT_TITLE_PAGE_NO, $jump_to_page) . ' ">' . $jump_to_page . '</a> ';
}
}
}
// next window of pages
if ($cur_window_num < $max_window_num) $display_links_string .= '<a href="' . zen_href_link($_GET['main_page'], $parameters . $this->page_name . '=' . (($cur_window_num) * $max_page_links + 1), $request_type) . '" title=" ' . sprintf(PREVNEXT_TITLE_NEXT_SET_OF_NO_PAGE, $max_page_links) . ' ">...</a> ';
// next button
if (($this->current_page_number < $this->number_of_pages) && ($this->number_of_pages != 1)) $display_links_string .= ' <a href="' . zen_href_link($_GET['main_page'], $parameters . 'page=' . ($this->current_page_number + 1), $request_type) . '" title=" ' . PREVNEXT_TITLE_NEXT_PAGE . ' ">' . PREVNEXT_BUTTON_NEXT . '</a> ';
if ($display_links_string == ' <strong class="current">1</strong> ') {
return ' ';
} else {
return $display_links_string;
}
}
// display number of total products found
function display_count($text_output) {
$to_num = ($this->number_of_rows_per_page * $this->current_page_number);
if ($to_num > $this->number_of_rows) $to_num = $this->number_of_rows;
$from_num = ($this->number_of_rows_per_page * ($this->current_page_number - 1));
if ($to_num == 0) {
$from_num = 0;
} else {
$from_num++;
}
if ($to_num <= 1) {
// don't show count when 1
return '';
} else {
return sprintf($text_output, $from_num, $to_num, $this->number_of_rows);
}
}
}
?>
As you can see there's four defines you'll have to define. This ugly hack works on all pages with splitting (search, category view, featured products, etc). This file is the only file you'll need to change (except for the defines), no other changes (e.g with templates etc) are needed!
Hope it'll work out for you guys!
// Sebban
-
Re: "View All" link
I tried the method posted directly above by Sebban and it works great. I have confirmed that the "Show All" link does appear on all pages with splitting, even the search pages. Below is an example of the four defines you could insert in includes/languages/YOUR_TEMPLATE/english.php:
PHP Code:
define('SHOW_ALL_TITLE', 'Show All Products on One Page');
define('SHOW_ALL_BUTTON', '[Show All]');
define('SHOW_PAGEVIEW_TITLE', 'Split Products Among Multiple Pages');
define('SHOW_PAGEVIEW_BUTTON', '[Split Pages]');
-
Re: "View All" link
hi
iZilla_Pod how to hide the link "show all" when is only one page??
-
Re: "View All" link
This worked like a charm for me, Sebban. Thank you!