DrupalBin
Submit Code
About
Recent Posts
Code
Fix for Fix for Code
Fix for Code
Code
Node type whitelist
an axe coach accessories
coach purses married
Fix for de las ghd alturas
de las ghd alturas
Code
more
User login
Log in using OpenID:
What is OpenID?
Username:
*
Password:
*
Log in using OpenID
Cancel OpenID login
Create new account
Request new password
Tags
CCK
drupal
fapi
jquery
menu
module
php
simpletest
taxonomy
test
theme
views
more tags
Home
Fix for theme_pager
View
Fix
March 9, 2010 - 12:15pm — Anonymous
/**
* Format a query pager.
*
* Menu callbacks that display paged query results should call theme('pager') to
* retrieve a pager control so that users can view other results.
* Format a list of nearby pages with additional query results.
*
* @param $tags
* An array of labels for the controls in the pager.
* @param $limit
* The number of query results to display per page.
* @param $element
* An optional integer to distinguish between multiple pagers on one page.
* @param $parameters
* An associative array of query string parameters to append to the pager links.
* @param $quantity
* The number of pages in the list.
* @return
* An HTML string that generates the query pager.
*
* @ingroup themeable
*/
function
mytheme_pager
(
$tags
=
array
(
)
,
$limit
= 10,
$element
= 0,
$parameters
=
array
(
)
,
$quantity
= 9
)
{
global
$pager_page_array
,
$pager_total
;
// Calculate various markers within this pager piece:
// Middle is used to "center" pages around the current page.
$pager_middle
=
ceil
(
$quantity
/
2
)
;
// current is the page we are currently paged to
$pager_current
=
$pager_page_array
[
$element
]
+
1
;
// first is the first page listed by this pager piece (re quantity)
$pager_first
=
$pager_current
-
$pager_middle
+
1
;
// last is the last page listed by this pager piece (re quantity)
$pager_last
=
$pager_current
+
$quantity
-
$pager_middle
;
// max is the maximum page number
$pager_max
=
$pager_total
[
$element
]
;
// End of marker calculations.
// Prepare for generation loop.
$i
=
$pager_first
;
if
(
$pager_last
>
$pager_max
)
{
// Adjust "center" if at end of query.
$i
=
$i
+
(
$pager_max
-
$pager_last
)
;
$pager_last
=
$pager_max
;
}
if
(
$i
<
=
0
)
{
// Adjust "center" if at start of query.
$pager_last
=
$pager_last
+
(
1 -
$i
)
;
$i
=
1
;
}
// End of generation loop preparation.
$li_first
=
theme
(
'pager_first'
,
(
isset
(
$tags
[
0
]
)
?
$tags
[
0
]
:
t
(
'« first'
)
)
,
$limit
,
$element
,
$parameters
)
;
$li_previous
=
theme
(
'pager_previous'
,
(
isset
(
$tags
[
1
]
)
?
$tags
[
1
]
:
t
(
'‹ previous'
)
)
,
$limit
,
$element
, 1,
$parameters
)
;
$li_next
=
theme
(
'pager_next'
,
(
isset
(
$tags
[
3
]
)
?
$tags
[
3
]
:
t
(
'next ›'
)
)
,
$limit
,
$element
, 1,
$parameters
)
;
$li_last
=
theme
(
'pager_last'
,
(
isset
(
$tags
[
4
]
)
?
$tags
[
4
]
:
t
(
'last »'
)
)
,
$limit
,
$element
,
$parameters
)
;
if
(
$pager_total
[
$element
]
>
1
)
{
if
(
$li_first
)
{
$items
[
]
=
array
(
'class'
=
>
'pager-first'
,
'data'
=
>
$li_first
,
)
;
}
if
(
$li_previous
)
{
$items
[
]
=
array
(
'class'
=
>
'pager-previous'
,
'data'
=
>
$li_previous
,
)
;
}
// When there is more than one page, create the pager list.
if
(
$i
!
=
$pager_max
)
{
if
(
$i
>
1
)
{
$items
[
]
=
array
(
'class'
=
>
'pager-ellipsis'
,
'data'
=
>
'…'
,
)
;
}
// Now generate the actual pager piece.
for
(
;
$i
<
=
$pager_last
&&
$i
<
=
$pager_max
;
$i
++
)
{
if
(
$i
<
$pager_current
)
{
$items
[
]
=
array
(
'class'
=
>
'pager-item'
,
'data'
=
>
theme
(
'pager_previous'
,
$i
,
$limit
,
$element
,
(
$pager_current
-
$i
)
,
$parameters
)
,
)
;
}
if
(
$i
==
$pager_current
)
{
$items
[
]
=
array
(
'class'
=
>
'pager-current'
,
'data'
=
>
$i
,
)
;
}
if
(
$i
>
$pager_current
)
{
$items
[
]
=
array
(
'class'
=
>
'pager-item'
,
'data'
=
>
theme
(
'pager_next'
,
$i
,
$limit
,
$element
,
(
$i
-
$pager_current
)
,
$parameters
)
,
)
;
}
}
if
(
$i
<
$pager_max
)
{
$items
[
]
=
array
(
'class'
=
>
'pager-ellipsis'
,
'data'
=
>
'…'
,
)
;
}
}
// End generation.
if
(
$li_next
)
{
$items
[
]
=
array
(
'class'
=
>
'pager-next'
,
'data'
=
>
$li_next
,
)
;
}
if
(
$li_last
)
{
$items
[
]
=
array
(
'class'
=
>
'pager-last'
,
'data'
=
>
$li_last
,
)
;
}
return
theme
(
'item_list'
,
$items
,
NULL
,
'ul'
,
array
(
'class'
=
>
'pager'
)
)
;
}
}
function
pager
theme
Submit Fix
Summary:
Tags:
Any tags you'd like to associate with your code, delimitered by commas (example: Views, CCK, Module, etc).
Show summary in full view
/** * Format a query pager. * * Menu callbacks that display paged query results should call theme('pager') to * retrieve a pager control so that users can view other results. * Format a list of nearby pages with additional query results. * * @param $tags * An array of labels for the controls in the pager. * @param $limit * The number of query results to display per page. * @param $element * An optional integer to distinguish between multiple pagers on one page. * @param $parameters * An associative array of query string parameters to append to the pager links. * @param $quantity * The number of pages in the list. * @return * An HTML string that generates the query pager. * * @ingroup themeable */ function mytheme_pager($tags = array(), $limit = 10, $element = 0, $parameters = array(), $quantity = 9) { global $pager_page_array, $pager_total; // Calculate various markers within this pager piece: // Middle is used to "center" pages around the current page. $pager_middle = ceil($quantity / 2); // current is the page we are currently paged to $pager_current = $pager_page_array[$element] + 1; // first is the first page listed by this pager piece (re quantity) $pager_first = $pager_current - $pager_middle + 1; // last is the last page listed by this pager piece (re quantity) $pager_last = $pager_current + $quantity - $pager_middle; // max is the maximum page number $pager_max = $pager_total[$element]; // End of marker calculations. // Prepare for generation loop. $i = $pager_first; if ($pager_last > $pager_max) { // Adjust "center" if at end of query. $i = $i + ($pager_max - $pager_last); $pager_last = $pager_max; } if ($i <= 0) { // Adjust "center" if at start of query. $pager_last = $pager_last + (1 - $i); $i = 1; } // End of generation loop preparation. $li_first = theme('pager_first', (isset($tags[0]) ? $tags[0] : t('« first')), $limit, $element, $parameters); $li_previous = theme('pager_previous', (isset($tags[1]) ? $tags[1] : t('‹ previous')), $limit, $element, 1, $parameters); $li_next = theme('pager_next', (isset($tags[3]) ? $tags[3] : t('next ›')), $limit, $element, 1, $parameters); $li_last = theme('pager_last', (isset($tags[4]) ? $tags[4] : t('last »')), $limit, $element, $parameters); if ($pager_total[$element] > 1) { if ($li_first) { $items[] = array( 'class' => 'pager-first', 'data' => $li_first, ); } if ($li_previous) { $items[] = array( 'class' => 'pager-previous', 'data' => $li_previous, ); } // When there is more than one page, create the pager list. if ($i != $pager_max) { if ($i > 1) { $items[] = array( 'class' => 'pager-ellipsis', 'data' => '…', ); } // Now generate the actual pager piece. for (; $i <= $pager_last && $i <= $pager_max; $i++) { if ($i < $pager_current) { $items[] = array( 'class' => 'pager-item', 'data' => theme('pager_previous', $i, $limit, $element, ($pager_current - $i), $parameters), ); } if ($i == $pager_current) { $items[] = array( 'class' => 'pager-current', 'data' => $i, ); } if ($i > $pager_current) { $items[] = array( 'class' => 'pager-item', 'data' => theme('pager_next', $i, $limit, $element, ($i - $pager_current), $parameters), ); } } if ($i < $pager_max) { $items[] = array( 'class' => 'pager-ellipsis', 'data' => '…', ); } } // End generation. if ($li_next) { $items[] = array( 'class' => 'pager-next', 'data' => $li_next, ); } if ($li_last) { $items[] = array( 'class' => 'pager-last', 'data' => $li_last, ); } return theme('item_list', $items, NULL, 'ul', array('class' => 'pager')); } }
Syntax highlighting mode:
ActionScript
ColdFusion
Diff
Drupal 5
Drupal 6
HTML
INI
Javascript
MySQL
PHP
Python
robots.txt
SQL
Text
Select the syntax highlighting mode to use.
See Also:
Order
Title:
URL:
-1
0
1
Title:
URL:
-1
0
1
Any links you'd like to have associated with the post (Drupal.org issue, Wikipedia article, etc).
File attachments
Changes made to the attachments are not permanent until you save this post. The first "listed" file will be included in RSS feeds.
Attach new file:
The maximum upload size is
1 MB
. Only files with the following extensions may be uploaded:
jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp phps
.