Оптимизация pagenavi
Прочитав пост уважаемого Жомарта (после увидев статью Ярослава Бирзул) и посмотрев функционал navi.php, решил внести свои 5ть копеек.
В итоге взял функцию пагинации из темы уважаемого www.acosmin.com и чуток доработал.
Получилось вот что:
function wp_pagenavi2() {
global $paged, $wp_query;
$pages_to_show = 5; //сколько ссылок делать по сторонам
$max_page = $wp_query->max_num_pages;
if($max_page>1){
if(empty($paged)) {
$paged = 1;
}
$prelabel = '<strong>&laquo;</strong>';
$nxtlabel = '<strong>&raquo;</strong>';
$half_pages_to_show = round($pages_to_show/2); if($max_page > 1) {
echo "$before <div class='Nav'><span>Стр. ($max_page): </span>";
if ($paged >= ($pages_to_show-1)) {
echo '<a href="'.get_pagenum_link().'">&laquo; Первая</a> ... ';
}
previous_posts_link($prelabel);
for($i = $paged — $half_pages_to_show; $i <= $paged + $half_pages_to_show; $i++) {
if ($i >= 1 && $i <= $max_page) {
if($i == $paged) {
echo "<strong class='on'>$i</strong>";
} else {
echo ' <a href="'.get_pagenum_link($i).'">'.$i.'</a> ';
}
}
}
next_posts_link($nxtlabel, $max_page);
if (($paged+$half_pages_to_show) < ($max_page)) {
echo ' ... <a href="'.get_pagenum_link($max_page).'">Последняя &raquo;</a>';
}
echo "<div class='NavEnd'></div></div> $after";
}
}
}
global $paged, $wp_query;
$pages_to_show = 5; //сколько ссылок делать по сторонам
$max_page = $wp_query->max_num_pages;
if($max_page>1){
if(empty($paged)) {
$paged = 1;
}
$prelabel = '<strong>&laquo;</strong>';
$nxtlabel = '<strong>&raquo;</strong>';
$half_pages_to_show = round($pages_to_show/2); if($max_page > 1) {
echo "$before <div class='Nav'><span>Стр. ($max_page): </span>";
if ($paged >= ($pages_to_show-1)) {
echo '<a href="'.get_pagenum_link().'">&laquo; Первая</a> ... ';
}
previous_posts_link($prelabel);
for($i = $paged — $half_pages_to_show; $i <= $paged + $half_pages_to_show; $i++) {
if ($i >= 1 && $i <= $max_page) {
if($i == $paged) {
echo "<strong class='on'>$i</strong>";
} else {
echo ' <a href="'.get_pagenum_link($i).'">'.$i.'</a> ';
}
}
}
next_posts_link($nxtlabel, $max_page);
if (($paged+$half_pages_to_show) < ($max_page)) {
echo ' ... <a href="'.get_pagenum_link($max_page).'">Последняя &raquo;</a>';
}
echo "<div class='NavEnd'></div></div> $after";
}
}
}
Вызывается оно просто:
Кода не намного больше, но есть некоторые полезные детали.
Отличия от navi.php: возможность перемещения на пред. и след. страницу.
ноября 17, 2008 at 15:39
Вполне обычный скрипт получился — в мой переделанный Жомартом добавить previous_posts_link и next_posts_link (собственно, у меня добавлено :), и будет все правильно.
Но непонятно, что же ты у Ярослава вычитал, если у тебя получился такой пагинатор. Количество страниц, конечно, показывается, но — нелогичные элементы «последняя»-"первая" (даже если считать, что идею Ярослава, которая и не его вовсе, мы отметаем как нераспространенную). И кавычки вместо стрелочек, да еще так неловко расположенные, что необходимо заниматься пиксельхантингом.
strong class="on", который к тому же, никак не выделяется — этапять.
Ну это я так, от природной зловредности.
ноября 17, 2008 at 16:17
@Сергей М.:
Этот код показался мне более логичным чем ваш. Разве это плохо?
Для меня эти элементы логичны. Они более логичны и привычны, чем «новейшая» и «старейшая» — при таком раскладе приходится думать что же автор хотел этим сказать, прежде чем нажимать. Читая книгу и при желании открыть первую страницу или последнюю вы в голове прокручиваете слова «открою ка я старейшую» страницу?
Спасибо за совет. Исправлю, как будет время.
Скажу больше там и другие классы вставлены и ничего не делают в моей теме. Это подсказка для пользователей которым оно пригодится.
Ну я так и понял :)
февраля 14, 2009 at 19:26
Все немогу, я есьм нуб и за 5 часов (или больше) ни к чему не пришел, разве что нави.пхп установил. и то прабла в ковычках была, непонимаю этот чертов пхп. непойму как заставить работать ее, в фугкционале нужно чт-то прописать?
февраля 15, 2009 at 0:26
@John
Я бы принял вас за спам, но т.к. вы не указали адрес вашего блога, отношение к вам изменилось. Какие сложности у вас возникли? Помогу на безвозмездной основе...
февраля 15, 2009 at 11:59
:))) у меня просто уже мозг отказывал. хочу прикрутить этот скрип, но ничего не выходит. с пхп незнаком. хотябы подсказку в каком направлении двигатся, сделал все по простому файл в него скрипт в корневик темы, и вызовые его откудо мне нужно. но результата нет. делал по примеру сделанным Сергей М, там все пашет.
мая 19, 2009 at 8:36
А я себе просто код пхп воткнул и всё и шаб без всяких плагинов пашет, размер кода раза в полтора меньше (на глазок), чем приведенный в посте... :) Чё все парятся ???
мая 19, 2009 at 8:39
@Зайва Игорь Леонидович:
Вам при смене темы, придётся вспоминать куда воткнуть этот php код. С плагином же такого не случится. Вот в этом вы паритесь...