Thread: "View All" link

Page 1 of 2 12 LastLast
Results 1 to 10 of 46

Hybrid View

  1. #1
    Join Date
    Mar 2004
    Posts
    3
    Plugin Contributions
    0

    Idea or Suggestion 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>&nbsp;&nbsp;';
        else $display_links_string .= '<a href="' . zen_href_link($_GET['main_page'], $parameters, $request_type) . '" title=" ' . SHOW_PAGEVIEW_TITLE . ' ">' . SHOW_PAGEVIEW_BUTTON . '</a>&nbsp;&nbsp;';
    
        // 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>&nbsp;&nbsp;';
    
        // 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 .= '&nbsp;<strong class="current">' . $jump_to_page . '</strong>&nbsp;';
          } else {
            $display_links_string .= '&nbsp;<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>&nbsp;';
          }
        }
        }
    
        // 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>&nbsp;';
    
        // next button
        if (($this->current_page_number < $this->number_of_pages) && ($this->number_of_pages != 1)) $display_links_string .= '&nbsp;<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>&nbsp;';
    
        if ($display_links_string == '&nbsp;<strong class="current">1</strong>&nbsp;') {
          return '&nbsp;';
        } 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

  2. #2

    Default 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]'); 

  3. #3
    Join Date
    May 2008
    Posts
    31
    Plugin Contributions
    0

    Default Re: "View All" link

    hi

    iZilla_Pod how to hide the link "show all" when is only one page??

  4. #4
    Join Date
    Jun 2006
    Posts
    111
    Plugin Contributions
    0

    Default Re: "View All" link

    This worked like a charm for me, Sebban. Thank you!
    -------------------------
    Dichroic Jewelry

  5. #5
    Join Date
    Apr 2008
    Location
    NYC
    Posts
    4
    Plugin Contributions
    0

    Have a Drink Re: "View All" link

    Quote Originally Posted by triplexxx View Post
    hi

    iZilla_Pod how to hide the link "show all" when is only one page??

    I came up with a pretty easy solution to this. Simply change the following lines to hide the "show all" link from listings that fit on a single page.

    Change the code on around line 108 FROM:
    Code:
        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>&nbsp;&nbsp;';
        else $display_links_string .= '<a href="' . zen_href_link($_GET['main_page'], $parameters, $request_type) . '" title=" ' . SHOW_PAGEVIEW_TITLE . ' ">' . SHOW_PAGEVIEW_BUTTON . '</a>&nbsp;&nbsp;';
    TO:
    PHP Code:
          if ((!$this->page_all) && ($this->number_of_pages 1)) $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>&nbsp;&nbsp;&nbsp;&nbsp;';
          elseif (
    $this->page_all$display_links_string .= '<a href="' zen_href_link($_GET['main_page'], $parameters$request_type) . '" title=" ' SHOW_PAGEVIEW_TITLE ' ">' SHOW_PAGEVIEW_BUTTON '</a>&nbsp;&nbsp;'
    Hope this helps!

    Dan - co-owner, SugarHill Works

  6. #6
    Join Date
    Jun 2009
    Posts
    8
    Plugin Contributions
    0

    Default Re: "View All" link

    I made the changes to the split_page_results.php and it worked great except for when I had a category with only one product in it, then nothing showed up on the page. No error, just an url with a blank page. Any advice? Thanks.

  7. #7
    Join Date
    Sep 2003
    Location
    Ohio
    Posts
    69,402
    Plugin Contributions
    6

    Default Re: "View All" link

    You might get the Debug Tool from the Free Software Add Ons and load that to your site to see if it lists the problem for you ...
    Linda McGrath
    If you have to think ... you haven't been zenned ...

    Did YOU buy the Zen Cart Team a cup of coffee and a donut today? Just click here to support the Zen Cart Team!!

    Are you using the latest? Perhaps you've a problem that's fixed in the latest version: [Upgrade today!]
    Officially PayPal-Certified! Just click here

    Try our Zen Cart Recommended Services - Hosting, Payment and more ...
    Signup for our Announcements Forums to stay up to date on important changes and updates!

  8. #8
    Join Date
    Feb 2008
    Posts
    41
    Plugin Contributions
    0

    Default Re: "View All" link

    Is there a way to exclude specific categories? I have a couple of "All ____" categories that have way too many items to show on one page.

    JJd

  9. #9
    Join Date
    Aug 2016
    Location
    Greece
    Posts
    3
    Plugin Contributions
    0

    Default Re: "View All" link

    ive used your code and it works like a charm in my categories. but for some reason it cannot work in feature,special pages giving me a error with no description when clicked. Therefore is there a way to disable the button when you click on those pages ?
    the code is this:

    <?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>&nbsp;&nbsp;';
    else $display_links_string .= '<a href="' . zen_href_link($_GET['main_page'], $parameters, $request_type) . '" title=" ' . SHOW_PAGEVIEW_TITLE . ' ">' . SHOW_PAGEVIEW_BUTTON . '</a>&nbsp;&nbsp;';

    // 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>&nbsp;&nbsp;';

    // 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 .= '&nbsp;<strong class="current">' . $jump_to_page . '</strong>&nbsp;';
    } else {
    $display_links_string .= '&nbsp;<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>&nbsp;';
    }
    }
    }

    // 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>&nbsp;';

    // next button
    if (($this->current_page_number < $this->number_of_pages) && ($this->number_of_pages != 1)) $display_links_string .= '&nbsp;<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>&nbsp;';

    if ($display_links_string == '&nbsp;<strong class="current">1</strong>&nbsp;') {
    return '&nbsp;';
    } 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);
    }
    }
    }

    if (!$this->page_all) {
    ?>

  10. #10
    Join Date
    Sep 2008
    Location
    Cleethorpes
    Posts
    1,229
    Plugin Contributions
    6

    red flag Re: "View All" link

    This might be one for Ajeh - Although obviously any help is welcome

    I am wanting to implement a view all button on the Products Listing. I had something similar working which you can see here on this site https://www.tapes-direct.co.uk/index...&cPath=131_156

    You will see a View All Products Button.

    I added this by adjusting the code in split_pages_results.php

    Just after

    if (zen_not_null($parameters) && (substr($parameters, -1) != '&')) $parameters .= '&';

    I added:

    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>&nbsp;&nbsp;';
    else $display_links_string .= '<a href="' . zen_href_link($_GET['main_page'], $parameters, $request_type) . '" title=" ' . SHOW_PAGEVIEW_TITLE . ' ">' . SHOW_PAGEVIEW_BUTTON . '</a>&nbsp;&nbsp;';

    This works fine on Tapes Direct, which is running 1.5.4. However on 1.5.5e it doesn't work, in fact doesn't show the button at all.

    I have also tried some of the methods in this thread, but none of them seem to work with 1.5.5e
    Nick Smith - Venture Design and Print
    https://venturedesignandprint.co.uk

 

 
Page 1 of 2 12 LastLast

Similar Threads

  1. View "All Products" and "New Products" in columns?
    By cchan in forum Templates, Stylesheets, Page Layout
    Replies: 6
    Last Post: 24 Feb 2011, 01:58 AM
  2. How to get a "View All" link per category?
    By cchan in forum Templates, Stylesheets, Page Layout
    Replies: 0
    Last Post: 17 Feb 2011, 06:15 PM
  3. How to remove "contact us", "My account" , and "view cart"?
    By thestampnomad in forum Basic Configuration
    Replies: 2
    Last Post: 13 Aug 2010, 07:55 PM
  4. Comment out "Check for Updates" Button, "Support Site" Link, & "Version" Link?
    By g00glethis1 in forum Customization from the Admin
    Replies: 4
    Last Post: 15 Mar 2010, 06:32 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg