-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathnextprev_links.theme.inc
57 lines (50 loc) · 1.61 KB
/
nextprev_links.theme.inc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
/**
* @file
*
* Contains the theme callbacks for our module
*/
/**
* Theme callback for 'nextprev_links_pager'
*/
function theme_nextprev_links_pager($variables) {
$interval = 1;
$element = $variables['element'];
$parameters = $variables['parameters'];
global $pager_page_array, $pager_total;
if ($pager_page_array[$element] > 0) {
// Add rel="prev".
$page_new = pager_load_array($pager_page_array[$element] - $interval, $element, $pager_page_array);
$head_link = _nextprev_links_prep_rel_link($page_new, $element, $parameters, 'prev');
drupal_add_html_head_link($head_link);
}
if ($pager_page_array[$element] < ($pager_total[$element] - 1)) {
// Add rel="next".
$page_new = pager_load_array($pager_page_array[$element] + $interval, $element, $pager_page_array);
$head_link = _nextprev_links_prep_rel_link($page_new, $element, $parameters, 'next');
drupal_add_html_head_link($head_link);
}
return theme('pager', $variables);
}
function _nextprev_links_prep_rel_link($page_new, $element, $parameters = array(), $rel = 'next') {
$page = isset($_GET['page']) ? $_GET['page'] : '';
if ($new_page = implode(',', pager_load_array($page_new[$element], $element, explode(',', $page)))) {
$parameters['page'] = $new_page;
}
$query = array();
if (count($parameters)) {
$query = drupal_get_query_parameters($parameters, array());
}
if ($query_pager = pager_get_query_parameters()) {
$query = array_merge($query, $query_pager);
}
return array(
'rel' => $rel,
'href' => url(
$_GET['q'],
array(
'query' => $query,
)
),
);
}