API15:JPagination
From Joomla! Documentation
(Difference between revisions)
| (3 intermediate revisions by one user not shown) | |||
| Line 1: | Line 1: | ||
| − | <dpl> | + | <span class="editsection" |
| + | |||
| + | style="font-size:76%;"> | ||
| + | <nowiki>[</nowiki> | ||
| + | |||
| + | [[Description:JPagination|Edit | ||
| + | |||
| + | Descripton]]<nowiki>]</nowiki> | ||
| + | </span> | ||
| + | {{Description:JPagination}} | ||
| + | |||
| + | ===Defined in=== | ||
| + | libraries/joomla/html/pagination.php | ||
| + | ===Methods=== | ||
| + | {| class="wikitable sortable" | ||
| + | |- | ||
| + | !Method name | ||
| + | !Description | ||
| + | |- | ||
| + | |[[API15:JPagination/__construct|__construct]] | ||
| + | |Constructor | ||
| + | |- | ||
| + | |[[API15:JPagination/getRowOffset|getRowOffset]] | ||
| + | |Return the rationalised offset for a row with a given index. | ||
| + | |- | ||
| + | |[[API15:JPagination/getData|getData]] | ||
| + | |Return the pagination data object, only creating it if it doesn't already exist | ||
| + | |- | ||
| + | |[[API15:JPagination/getPagesCounter|getPagesCounter]] | ||
| + | |Create and return the pagination pages counter string, ie. Page 2 of 4 | ||
| + | |- | ||
| + | |[[API15:JPagination/getResultsCounter|getResultsCounter]] | ||
| + | |Create and return the pagination result set counter string, ie. Results 1-10 of 42 | ||
| + | |- | ||
| + | |[[API15:JPagination/getPagesLinks|getPagesLinks]] | ||
| + | |Create and return the pagination page list string, ie. Previous, Next, 1 2 3 ... x | ||
| + | |- | ||
| + | |[[API15:JPagination/getListFooter|getListFooter]] | ||
| + | |Return the pagination footer | ||
| + | |- | ||
| + | |[[API15:JPagination/getLimitBox|getLimitBox]] | ||
| + | |Creates a dropdown box for selecting how many records to show per page | ||
| + | |- | ||
| + | |[[API15:JPagination/orderUpIcon|orderUpIcon]] | ||
| + | |Return the icon to move an item UP | ||
| + | |- | ||
| + | |[[API15:JPagination/orderDownIcon|orderDownIcon]] | ||
| + | |Return the icon to move an item DOWN | ||
| + | |} | ||
| + | |||
| + | ===Importing=== | ||
| + | <source lang="php">jimport( 'joomla.html.pagination' );</source> | ||
| + | |||
| + | <span class="editsection" style="font-size:76%;"><nowiki>[</nowiki>[[SeeAlso:JPagination|Edit See Also]]<nowiki>]</nowiki></span> | ||
| + | {{SeeAlso:JPagination}} | ||
| + | |||
| + | ===Examples=== | ||
| + | <CodeExamplesForm /> | ||
| + | ´<dpl> | ||
| + | noresultsheader=\n | ||
category=JPagination | category=JPagination | ||
category=CodeExample | category=CodeExample | ||
category=ClassExample | category=ClassExample | ||
| + | include=* | ||
| + | format= ,,, | ||
</dpl> | </dpl> | ||
Latest revision as of 03:23, 24 October 2010
This Namespace has been archived - Please Do Not Edit or Create Pages in this namespace. Pages contain information for a Joomla! version which is no longer supported. It exists only as a historical reference, will not be improved and its content may be incomplete.
[
Edit Descripton] The JPagination class supports pagination of lists of items across multiple pages. It can be used in both the front-end and back-end, although there are slight differences in behaviour. The HTML output can be overridden using a template layout override.
Contents |
[edit] Defined in
libraries/joomla/html/pagination.php
[edit] 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 |
[edit] Importing
jimport( 'joomla.html.pagination' );
[edit] See also
[edit] Examples
<CodeExamplesForm />
´JPagination on Frontpage
Pagination like Google
| 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

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