API15

JPagination: Difference between revisions

From Joomla! Documentation

Batch1211 (talk | contribs)
No edit summary
Batch1211 (talk | contribs)
No edit summary
Line 57: Line 57:
===Examples===
===Examples===
<CodeExamplesForm />
<CodeExamplesForm />
<dpl>
´<dpl>
noresultsheader=\n
  category=JPagination
  category=JPagination
  category=CodeExample
  category=CodeExample
  category=ClassExample
  category=ClassExample
include=*
format= ,,,
</dpl>
</dpl>

Revision as of 08:23, 24 October 2010

[

Edit Descripton] Template:Description:JPagination

Defined in

libraries/joomla/html/pagination.php

Methods

Method name Description
__construct Constructor
getRowOffset Return the rationalised offset for a row with a given index.
getData Return the pagination data object, only creating it if it doesn't already exist
getPagesCounter Create and return the pagination pages counter string, ie. Page 2 of 4
getResultsCounter Create and return the pagination result set counter string, ie. Results 1-10 of 42
getPagesLinks Create and return the pagination page list string, ie. Previous, Next, 1 2 3 ... x
getListFooter Return the pagination footer
getLimitBox Creates a dropdown box for selecting how many records to show per page
orderUpIcon Return the icon to move an item UP
orderDownIcon Return the icon to move an item DOWN

Importing

jimport( 'joomla.html.pagination' );

[Edit See Also] Template:SeeAlso:JPagination

Examples

<CodeExamplesForm />

´

Pagination like Google

Warning!

This is a core hack. Files you change as described on this page will be overwritten during updates of Joomla!. For more information, see Core hack.

  • edit the libraries/joomla/html/pagination.php
  • In the function __construct see the line $displayedPages = 10;
  • Replace the $this->set( 'pages.start',... with the following lines
  $_remainder = $this->get('pages.current') % $displayedPages;
  if($__remainder == 0){
     $this->set( 'pages.start', (floor( $this->get('pages.current') / $displayedPages)) * $displayedPages -4);  
  }elseif($__remainder == 1 and $this->get('pages.current') > $displayedPages){
     $this->set( 'pages.start', (floor( ($this->get('pages.current')-1) / $displayedPages)) * $displayedPages -4);  
  }else{
    $this->set( 'pages.start', (floor( $this->get('pages.current') / $displayedPages)) * $displayedPages + 1);
  }
  • In the function _buildDataObject find the line
 for ($i = $this->get('pages.start'); $i <= $stop; $i ++)
  • In this for loop, find the line
 if ($i != $this->get('pages.current') || $this->_viewall)
  • Add the elseif statement,
 if ($i != $this->get('pages.current') || $this->_viewall)
 {
   $data->pages[$i]->base = $offset;
   $data->pages[$i]->link = JRoute::_("&limitstart=".$offset);
 }elseif($i == $this->get('pages.current')){
   $data->pages[$i]->text = '<b>' . $i . '</b>';
 }

This example was originally contributed by User:Mahboobkhalid.


Chris Davenport 13:38, 17 April 2011 (CDT) Edit comment

JPagination on Frontpage

Mariska wrote:

if you want to Jpagination work on front page change Jpagination.php

on this code function _buildDataObject bicause this method use to generate link on front end // add "&limit=".$this->limit to $data->[]->link

   function _buildDataObject() {
       // Initialize variables
       $data = new stdClass();
       $data->all = new JPaginationObject(JText::_('View All'));
       if (!$this->_viewall) {
           $data->all->base = '0';
           $data->all->link = JRoute::_("&limit=".$this->limit."&limitstart="); // <== this  
       }
       // Set the start and previous data objects
       $data->start = new JPaginationObject(JText::_('Start'));
       $data->previous = new JPaginationObject(JText::_('Prev'));
       if ($this->get('pages.current') > 1) {
           $page = ($this->get('pages.current') - 2) * $this->limit;
          $page = $page == 0 ?  : $page; //set the empty for removal from route
           $data->start->base = '0';
           $data->start->link = JRoute::_("&limit=".$this->limit."&limitstart="); //<== this
           $data->previous->base = $page;
           $data->previous->link = JRoute::_("&limit=".$this->limit."&limitstart=" . $page); //<== this
       }
       // Set the next and end data objects
       $data->next = new JPaginationObject(JText::_('Next'));
       $data->end = new JPaginationObject(JText::_('End'));
       if ($this->get('pages.current') < $this->get('pages.total')) {
           $next = $this->get('pages.current') * $this->limit;
           $end = ($this->get('pages.total') - 1) * $this->limit;
           $data->next->base = $next;
           $data->next->link = JRoute::_("&limit=".$this->limit."&limitstart=" . $next); // <== this
           $data->end->base = $end;
           $data->end->link = JRoute::_("&limit=".$this->limit."&limitstart=" . $end); // <== this
       }
       $data->pages = array();
       $stop = $this->get('pages.stop');
       for ($i = $this->get('pages.start'); $i <= $stop; $i++) {
           $offset = ($i - 1) * $this->limit
           $offset = $offset == 0 ?  : $offset;  //set the empty for removal from route
           $data->pages[$i] = new JPaginationObject($i);
           if ($i != $this->get('pages.current') || $this->_viewall) {
               $data->pages[$i]->base = $offset;
               $data->pages[$i]->link = JRoute::_("&limit=".$this->limit."&limitstart=" . $offset); //<== this
           }
       }
       return $data;
   }

Batch1211 05:42, 27 September 2010 (CDT) Edit comment