Доброго времени.
Как можно вывести несколько пейджеров для одного views? Пример: включен views_load_more но под ним нужен вывод еще и обычного пейджера.
А нужно ли? Видел ваш вопрос на орге..Может если нужно можно как подмодуль запилить
ну если это нужно мне, это нужно еще кому-то, и это применяется на многих сайтах, до думаю, ваш вопрос имеет конкретный, четкий, обоснованный и вполне логичный ответ. Следовательно, смысла спрашивать нет, если вам есть что сказать по сути, мы все вам будем благодарны.
Ну может кто найдется, кто ради вас запилит модуль,за так..Или ради четкого обоснованного ответа..
"shevgeny" wrote:
Следовательно, смысла спрашивать нет
- Если нет денег - то нужно постараться убедить людей заняться проблемой
1) Кто-то сказал вам, что денег нет?
2) Если вы хотите денег, то вам как минимум в другой раздел.
3) Если есть предложения, предлагайте конкретно: сколько, когда, на каких условиях.
Решить не удалось. 2 пейджера в принципе выводил - дублировал пейджер, но переопределял вывод с помощью theme_pager. Но в таком варианте они совместно работать отказывались - контент тоже либо дублировался (если пейджер с аякс) либо сбрасывались настройки пейджера (без аякса). В итоге оставил обычный пейджер и добавил в фильтрах "Показать по ... на странице".
Решить не удалось. 2 пейджера в принципе выводил - дублировал пейджер, но переопределял вывод с помощью theme_pager. Но в таком варианте они совместно работать отказывались - контент тоже либо дублировался (если пейджер с аякс) либо сбрасывались настройки пейджера (без аякса). В итоге оставил обычный пейджер и добавил в фильтрах "Показать по ... на странице".
А не помните, как переопределяли пейджер? Может кодик остался где-нибудь в закромах? Может вместе покрутим да и чего-нибудь накрутим? Тема, думаю, многим может быть полезна. Я могу попробовать привлечь кого-нибудь из своих ребят.
В настройках пейджера вьюса есть поле "ID постраничного навигатора"
По умолчанию там 0
Для разных пейджеров на одной странице это поле должно иметь разные значения(0,1,2,3 и т.п.)
В настройках пейджера вьюса есть поле "ID постраничного навигатора"
По умолчанию там 0
Для разных пейджеров на одной странице это поле должно иметь разные значения(0,1,2,3 и т.п.)
Тогда пейджеры должны работать..
То есть, правильно ли я понимаю, этот id создаст доп.параметр в URL и, по сути, отдельную навигацию для одного представления? Вы не пробовали, как они будут вести себя при переключении страниц то через первый, то через второй пейджер? Просто я думал, что это для избавления от конфликтов при показе нескольких представлений на одной странице
2) Если вы хотите денег, то вам как минимум в другой раздел.
3) Если есть предложения, предлагайте конкретно: сколько, когда, на каких условиях.
Я в том смысле,что вам нужно учиться просить,а не командовать командирским тоном.
Таких топиков - быстро все решайте мою задачу а потом я отблагодарю своим молчанием , тут много,и никто не изменится.
Я иногда ковыряю некоторые интересные задачи просто так
Я в том смысле,что вам нужно учиться просить,а не командовать командирским тоном.
Таких топиков - быстро все решайте мою задачу а потом я отблагодарю своим молчанием , тут много,и никто не изменится.
Я иногда ковыряю некоторые интересные задачи просто так
У вас, сэр, паранойя
Конкретно вам и конкретно в этом топике никто ничего не приказывал. И даже не просил Вас спрашивали. Нет — увы, да — супер. Только и всего.
А не помните, как переопределяли пейджер? Может кодик остался где-нибудь в закромах? Может вместе покрутим да и чего-нибудь накрутим? Тема, думаю, многим может быть полезна. Я могу попробовать привлечь кого-нибудь из своих ребят.
К сожалению ничего не осталось. Проект сдал, а потом еще много чего было.
// 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.
// If we are anywhere but the first page if ($pager_page_array[$element] > 0) { $page_new = pager_load_array($pager_page_array[$element] - $interval, $element, $pager_page_array);
// If the previous page is the first page, mark the link as such. if ($page_new[$element] == 0) { $output = theme('pager_first', array('text' => $text, 'element' => $element, 'parameters' => $parameters)); } // The previous page is not the first page. else { $output = theme('pager_link', array('text' => $text, 'page_new' => $page_new, 'element' => $element, 'parameters' => $parameters)); } } elseif ($pager_page_array[$element] == 0) { $output = theme('pager_link', array('text' => $text, 'element' => $element, 'parameters' => $parameters)); } return $output; }
/* * theme_pager_next() */
function nidbincity_pager_next($variables) { $text = $variables['text']; $element = $variables['element']; $interval = $variables['interval']; $parameters = $variables['parameters']; global $pager_page_array, $pager_total; $output = '';
// If we are anywhere but the last page if ($pager_page_array[$element] < ($pager_total[$element] - 1)) { $page_new = pager_load_array($pager_page_array[$element] + $interval, $element, $pager_page_array); // If the next page is the last page, mark the link as such. if ($page_new[$element] == ($pager_total[$element] - 1)) { $output = theme('pager_last', array('text' => $text, 'element' => $element, 'parameters' => $parameters)); } // The next page is not the last page. else { $output = theme('pager_link', array('text' => $text, 'page_new' => $page_new, 'element' => $element, 'parameters' => $parameters)); } } elseif ($pager_page_array[$element] == $pager_total[$element] - 1) { $output = theme('pager_link', array('text' => $text, 'element' => $element, 'parameters' => $parameters)); }
return
$output; } ?>
<?php$element = $variables['element'];?> менял на <?php$element = $variables[1];?>
менял ID "0" во views на разные значения — ничего.
Сам пейджер выводится в шаблоне views через стандартный
Комментарии
Тоже интересует.
Например, как на сайте розетки (http://rozetka.com.ua/notebooks/c80004/filter/) "Показать еще 32 товара" и ниже сам пейджер.
тоже интересует, вообще странно, что этим так редко интересуются, я уже всё голову сломал. Удалось как-нибудь решить?
Думаю как то можно
та ладно? вопрос как раз в том, как)
А нужно ли? Видел ваш вопрос на орге..Может если нужно можно как подмодуль запилить
ну если это нужно мне, это нужно еще кому-то, и это применяется на многих сайтах, до думаю, ваш вопрос имеет конкретный, четкий, обоснованный и вполне логичный ответ. Следовательно, смысла спрашивать нет, если вам есть что сказать по сути, мы все вам будем благодарны.
Ну может кто найдется, кто ради вас запилит модуль,за так..Или ради четкого обоснованного ответа..
- Если нет денег - то нужно постараться убедить людей заняться проблемой1) Кто-то сказал вам, что денег нет?
2) Если вы хотите денег, то вам как минимум в другой раздел.
3) Если есть предложения, предлагайте конкретно: сколько, когда, на каких условиях.
Решить не удалось. 2 пейджера в принципе выводил - дублировал пейджер, но переопределял вывод с помощью theme_pager. Но в таком варианте они совместно работать отказывались - контент тоже либо дублировался (если пейджер с аякс) либо сбрасывались настройки пейджера (без аякса). В итоге оставил обычный пейджер и добавил в фильтрах "Показать по ... на странице".
А не помните, как переопределяли пейджер? Может кодик остался где-нибудь в закромах? Может вместе покрутим да и чего-нибудь накрутим? Тема, думаю, многим может быть полезна. Я могу попробовать привлечь кого-нибудь из своих ребят.
В настройках пейджера вьюса есть поле "ID постраничного навигатора"
По умолчанию там 0
Для разных пейджеров на одной странице это поле должно иметь разные значения(0,1,2,3 и т.п.)
Тогда пейджеры должны работать..
То есть, правильно ли я понимаю, этот id создаст доп.параметр в URL и, по сути, отдельную навигацию для одного представления? Вы не пробовали, как они будут вести себя при переключении страниц то через первый, то через второй пейджер? Просто я думал, что это для избавления от конфликтов при показе нескольких представлений на одной странице
Я в том смысле,что вам нужно учиться просить,а не командовать командирским тоном.
Таких топиков - быстро все решайте мою задачу а потом я отблагодарю своим молчанием , тут много,и никто не изменится.
Я иногда ковыряю некоторые интересные задачи просто так
У вас, сэр, паранойя
Конкретно вам и конкретно в этом топике никто ничего не приказывал. И даже не просил Вас спрашивали. Нет — увы, да — супер. Только и всего.
К сожалению ничего не осталось. Проект сдал, а потом еще много чего было.
Нет, это параметр "element" для theme_pager (https://api.drupal.org/api/drupal/includes!pager.inc/function/theme_pager/7)
-----
element: An optional integer to distinguish between multiple pagers on one page.
------
Ага, спасибо. Но что-то я не догоняю. Не работает. У меня переопределенный пейджер не появляется, его нужно дополнительно выводить?
Код в темлейте:
<?php
// Calculate various markers within this pager piece:
$li_previous = theme('pager_previous', array('text' => (isset($tags[1]) ? '←' : NULL), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
$li_first = theme('pager_first', array('text' => 1, 'element' => $element, 'parameters' => $parameters));
// First-page link display condition
// When there is more than one page, create the pager list.
// Last-page link display condition
// End generation.
// If we are anywhere but the first page
// If the previous page is the first page, mark the link as such.
// If we are anywhere but the last page
/*
* theme_pager();
*/ function nidbincity_pager($variables) {
$tags = $variables['tags'];
$element = $variables['element'];
$parameters = $variables['parameters'];
$quantity = $variables['quantity'];
global $pager_page_array, $pager_total, $theme;
// 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_next = theme('pager_next', array('text' => (isset($tags[3]) ? '→' : NULL), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
$li_last = theme('pager_last', array('text' => $pager_max, 'element' => $element, 'parameters' => $parameters));
$show_first = ($i > 1) ? true : false;
if (
$pager_total[$element] > 1) {if ($li_previous) {
$items[] = array(
'class' => array('pager-previous'),
'data' => $li_previous,
);
}
if (
$show_first && $li_first) {$items[] = array(
'class' => array('pager-first'),
'data' => $li_first,
);
}
if ($i != $pager_max) {
if ($i > 2) {
$items[] = array(
'class' => array('pager-ellipsis'),
'data' => '…',
);
}
// Now generate the actual pager piece.
for (; $i <= $pager_last && $i <= $pager_max; $i++) {
if ($i < $pager_current) {
$items[] = array(
'class' => array('pager-item'),
'data' => theme('pager_previous', array('text' => $i, 'element' => $element, 'interval' => ($pager_current - $i), 'parameters' => $parameters)),
);
}
if ($i == $pager_current) {
$items[] = array(
'class' => array('pager-current'),
'data' => '<span>' . $i . '</span>',
);
}
if ($i > $pager_current) {
$items[] = array(
'class' => array('pager-item'),
'data' => theme('pager_next', array('text' => $i, 'element' => $element, 'interval' => ($i - $pager_current), 'parameters' => $parameters)),
);
}
}
if ($i < $pager_max) {
$items[] = array(
'class' => array('pager-ellipsis'),
'data' => '…',
);
}
}
$show_last = ($pager_max > ($i-1)) ? true : false;
if ($show_last && $li_last) {
$items[] = array(
'class' => 'pager-last',
'data' => $li_last,
);
}
if (
$li_next) {$items[] = array(
'class' => array('pager-next'),
'data' => $li_next,
);
}
return '<h2 class="element-invisible">' . t('Pages') . '</h2>' . theme('item_list', array(
'items' => $items,
'attributes' => array('class' => array('pager')),
));
}
} /*
* theme_pager_previous()
*/ function nidbincity_pager_previous($variables) {
$text = $variables['text'];
$element = $variables['element'];
$interval = $variables['interval'];
$parameters = $variables['parameters'];
global $pager_page_array;
$output = '';
if ($pager_page_array[$element] > 0) {
$page_new = pager_load_array($pager_page_array[$element] - $interval, $element, $pager_page_array);
if ($page_new[$element] == 0) {
$output = theme('pager_first', array('text' => $text, 'element' => $element, 'parameters' => $parameters));
}
// The previous page is not the first page.
else {
$output = theme('pager_link', array('text' => $text, 'page_new' => $page_new, 'element' => $element, 'parameters' => $parameters));
}
} elseif ($pager_page_array[$element] == 0) {
$output = theme('pager_link', array('text' => $text, 'element' => $element, 'parameters' => $parameters));
}
return $output;
} /*
* theme_pager_next()
*/ function nidbincity_pager_next($variables) {
$text = $variables['text'];
$element = $variables['element'];
$interval = $variables['interval'];
$parameters = $variables['parameters'];
global $pager_page_array, $pager_total;
$output = '';
if ($pager_page_array[$element] < ($pager_total[$element] - 1)) {
$page_new = pager_load_array($pager_page_array[$element] + $interval, $element, $pager_page_array);
// If the next page is the last page, mark the link as such.
if ($page_new[$element] == ($pager_total[$element] - 1)) {
$output = theme('pager_last', array('text' => $text, 'element' => $element, 'parameters' => $parameters));
}
// The next page is not the last page.
else {
$output = theme('pager_link', array('text' => $text, 'page_new' => $page_new, 'element' => $element, 'parameters' => $parameters));
}
} elseif ($pager_page_array[$element] == $pager_total[$element] - 1) {
$output = theme('pager_link', array('text' => $text, 'element' => $element, 'parameters' => $parameters));
}
return
$output;}
?>
<?php$element = $variables['element'];?>
менял на<?php$element = $variables[1];?>
менял ID "0" во views на разные значения — ничего.
Сам пейджер выводится в шаблоне views через стандартный
<?php if ($pager): ?>
<?php print $pager; ?>
<?php endif; ?>
Что я делаю не так?