Рабочие будни

Архивы

Оптимизация 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>&amp;laquo;</strong>';
$nxtlabel = '<strong>&amp;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().'">&amp;laquo; Первая</a> ... ';
}
previous_posts_link($prelabel);
for($i = $paged — $half_pages_to_show; $i  <= $paged + $half_pages_to_show; $i++) {
if ($i >= 1 &amp;&amp; $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).'">Последняя &amp;raquo;</a>';
}
echo "<div class='NavEnd'></div></div> $after";
}
}
}

Вызывается оно просто:

<?php if(function_exists('wp_pagenavi2')) { wp_pagenavi2(); } ?>

Кода не намного больше, но есть некоторые полезные детали.

Отличия от navi.php: возможность перемещения на пред. и след. страницу.

7 комментариев to “Оптимизация pagenavi”

  1. Сергей М. Says:

    Вполне обычный скрипт получился — в мой переделанный Жомартом добавить previous_posts_link и next_posts_link (собственно, у меня добавлено :), и будет все правильно.

    Но непонятно, что же ты у Ярослава вычитал, если у тебя получился такой пагинатор. Количество страниц, конечно, показывается, но — нелогичные элементы «последняя»-"первая" (даже если считать, что идею Ярослава, которая и не его вовсе, мы отметаем как нераспространенную). И кавычки вместо стрелочек, да еще так неловко расположенные, что необходимо заниматься пиксельхантингом.

    strong class="on", который к тому же, никак не выделяется — этапять.

    Ну это я так, от природной зловредности.

  2. Валентин Says:

    @Сергей М.:

    Вполне обычный скрипт получился — в мой переделанный Жомартом добавить previous_posts_link и next_posts_link (собственно, у меня добавлено :), и будет все правильно.

    Этот код показался мне более логичным чем ваш. Разве это плохо?

    Количество страниц, конечно, показывается, но — нелогичные элементы “последняя”-”первая”

    Для меня эти элементы логичны. Они более логичны и привычны, чем «новейшая» и «старейшая» — при таком раскладе приходится думать что же автор хотел этим сказать, прежде чем нажимать. Читая книгу и при желании открыть первую страницу или последнюю вы в голове прокручиваете слова «открою ка я старейшую» страницу?

    И кавычки вместо стрелочек, да еще так неловко расположенные, что необходимо заниматься пиксельхантингом.

    Спасибо за совет. Исправлю, как будет время.

    strong class=”on”, который к тому же, никак не выделяется — этапять.

    Скажу больше там и другие классы вставлены и ничего не делают в моей теме. Это подсказка для пользователей которым оно пригодится.

    Ну это я так, от природной зловредности.

    Ну я так и понял :)

  3. John Says:

    Все немогу, я есьм нуб и за 5 часов (или больше) ни к чему не пришел, разве что нави.пхп установил. и то прабла в ковычках была, непонимаю этот чертов пхп. непойму как заставить работать ее, в фугкционале нужно чт-то прописать?

  4. Валентин Says:

    @John

    Я бы принял вас за спам, но т.к. вы не указали адрес вашего блога, отношение к вам изменилось. Какие сложности у вас возникли? Помогу на безвозмездной основе...

  5. John Says:

    :))) у меня просто уже мозг отказывал. хочу прикрутить этот скрип, но ничего не выходит. с пхп незнаком. хотябы подсказку в каком направлении двигатся, сделал все по простому файл в него скрипт в корневик темы, и вызовые его откудо мне нужно. но результата нет. делал по примеру сделанным Сергей М, там все пашет.

  6. Зайва Игорь Леонидович Says:

    А я себе просто код пхп воткнул и всё и шаб без всяких плагинов пашет, размер кода раза в полтора меньше (на глазок), чем приведенный в посте... :) Чё все парятся ???

  7. Валентин Says:

    @Зайва Игорь Леонидович:

    Вам при смене темы, придётся вспоминать куда воткнуть этот php код. С плагином же такого не случится. Вот в этом вы паритесь...

Leave a Reply