Как настроить пейджер
У меня есть код, который выводит стандартный пейджер:
print theme('pager');
он выводит это:
<h2 class="element-invisible">Pages</h2>
<div class="item-list">
<ul class="pager"><li class="pager-current first">1</li>
<li class="pager-item"><a title="Go to page 2" href="/drupal/node?page=1">2</a></li>
<li class="pager-item"><a title="Go to page 3" href="/drupal/node?page=2">3</a></li>
<li class="pager-next"><a title="Go to next page" href="/drupal/node?page=1">next ›</a></li>
<li class="pager-last last"><a title="Go to last page" href="/drupal/node?page=5">last »</a></li>
</ul>
Как я могу изменить HTML на что-то вроде этого:
<ul class="pagination">
<li><a href="#"><</a></li>
<li><a href="#">1</a></li>
<li><a href="#" class="active">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">></a></li>
</ul>
Я просмотрел эту тему: https://www.drupal.org/node/387786, создал функцию bartik_preprocess_custom_pager
и файл custom-pager.tpl.php
внутри моих шаблонов темы Bartic, но я не могу заставить их работать.
print theme('custom_pager');
ничего не выводит. Кто-нибудь знает, как я могу настроить вывод HTML для пейджера, создавая его только для 1 страницы?
1 ответ
Это мой ответ из предыдущего сообщения .
Если вы реализуете theme_pager , вы Ожидается, что весь массив рендеринга пейджера будет создан с нуля с помощью нескольких функций темы - theme_pager_first , theme_pager_previous , theme_pager_next и theme_pager_last . Это похоже на слишком большую работу для добавления одного класса.
Так как theme_pager вызывает theme_item_list в самом конце, чтобы построить окончательный рендер массив, вы можете использовать hook_preprocess_HOOK изменить массив рендеринга пейджера до того, как drupal отобразит его в HTML.
function THEME_preprocess_item_list(&$vars) {
// make sure we're dealing with a pager item list
if (isset($vars['attributes']['class']) && in_array('pager', $vars['attributes']['class'])) {
// make sure there are items
if (count($vars['items'])) {
$vars['items'][0]['class'][] = 'test';
}
}
}
Очистите кеш после добавления этого крюка.
UPDATE : найдите первый элемент li.pager:
function THEME_preprocess_item_list(&$vars) {
// make sure we're dealing with a pager item list
if (isset($vars['attributes']['class']) && in_array('pager', $vars['attributes']['class'])) {
// loop the items and find the first .pager-item
foreach ($vars['items'] as $index => $item) {
if (in_array('pager-item', $item['class'])) {
$vars['items'][$index]['class'][] = 'test';
break;
}
}
}
}
UPDATE2 : найдите первый и последний элемент li.pager:
function azamara_preprocess_item_list(&$vars) {
// make sure we're dealing with a pager item list
if (isset($vars['attributes']['class']) && in_array('pager', $vars['attributes']['class'])) {
// loop the items and find the first and last .pager-item
$first = FALSE;
$last = NULL;
foreach ($vars['items'] as $index => $item) {
if (in_array('pager-item', $item['class'])) {
// first
if (!$first) {
$vars['items'][$index]['class'][] = 'test';
$first = TRUE;
}
// last
$last = $index;
}
}
if (!empty($last)) {
$vars['items'][$last]['class'][] = 'test2';
}
}
}