Навигация без плагина. Почти )))

19.07.2007 @ Рубрики: WordPress  

На днях занялся разгрузкой блога. Одно изменение уже на лицо – это кнопки в комментариях. Решил пока не писать об этом и отложить черновик до следующего раза.

Еще одно изменение касается постраничной навигации. Внизу страницы у меня есть ссылки (т.с. навигационные) [1][2][3] и т.д. Они и раньше там были. Они там были, чуть ли не с самого зарождения блога. Но только раньше там был плагин, а теперь его нет. Почти. Ну по правде сказать осталась лишь небольшой кусочек плагина. ))

Я просто взял немного его обрезал. Точнее вырезал не нужную мне часть, ту что отображается в админке, оставив самое главное. И вот это оставшееся я вставил в шаблон своей темы. Визуальный результат тот же самый. Однако теперь у меня на один плагином меньше.

Если говорить конкретнее, то вот что я вставил в index.php:

$before=’ ‘;
$after=’ ‘;
$prelabel=’«’;
$nxtlabel=’»’;$pages_to_show = 5;
$half_pages_to_show = round($pages_to_show/2);if (!is_single()) {
if (get_query_var(’what_to_show’) == ‘posts’) {
preg_match(’#FROM\s(.*)\sGROUP BY#siU’, $request, $matches);
$fromwhere = $matches[1];
$numposts = $wpdb->get_var(”SELECT COUNT(DISTINCT ID) FROM $fromwhere”);
$max_page = ceil($numposts /$posts_per_page);
} else {
$max_page = 999999;
}
if(empty($paged)) {
$paged = 1;
}
if($max_page > 1) {
echo “$before Страницы ($max_page): “;
if ($paged >= ($pages_to_show-1)) {
echo ‘<a xhref=”‘.get_pagenum_link().’” mce_href=”‘.get_pagenum_link().’” >« В начало</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 "[$i]";
} else {
echo '<a xhref="'.get_pagenum_link($i).'" mce_href="'.get_pagenum_link($i).'" >'.$i.'</a> ';
}}}
next_posts_link($nxtlabel, $max_page);
if (($paged+$half_pages_to_show) < ($max_page)) {
echo ' ... <a xhref="'.get_pagenum_link($max_page).'" mce_href="'.get_pagenum_link($max_page).'" >В конец »</a>';
}
echo "$after";
}}
?>

Я оставил лишь необходимые для работы настройки:

В $before=’ ‘ и $after=’ ‘ задаем тэги, которые будут обрамлять нашу строку (лучше сказать панель) навигации.

$prelabel=’laquo;’ – « В начало

$nxtlabel=’raquo;’ – В конец »

$pages_to_show = 5 – сколько страниц (номеров страниц) показывать.

На самом деле в этих переменных можно хоть смайлики задавать (за исключением $pages_to_show, здесь все таки число надо), главное чтоб выводилось красиво.

UPD: В связи с тем, что wordpress периодически коверкает код, я выложить рабочий код для скачивания.

Теперь вы можете его скачать.

Черно-белых комментариев: 28

  • Денис Болтиков :

    А зачем в блоге постраничная навигация? Чем не устраивают ссылки вперед-назад?

  • Delchyve :

    Денис, ну понимаешь “на вкус и цвет…”. Кому-то нравится “Вперед-Назад”, кому-то - нет. Я среди вторых.
    Я хочу чтобы пользователь мог идти по пронумерованным страницам, и знать сколько осталось до конца (ну это как пример). А вобще, мне это нравится еще и визуально. Вот переводишь шаблон и думаешь как же корректней написать “вперед” или “далее” или “след. стр.” и есть еще куча вариантов. Но они мне не нравятся и именно поэтому я нумерованный список страниц :)

  • Денис Болтиков :

    Понятно, спасибо :)

    Я просто не могу представить ситуацию, где пользователю надо попасть, например, именно на 5 страницу :)

  • Delchyve :

    :)
    Кстати, очень удобно. Особенно если запомнить страницу, на которой находилась нужная информация. Элементарный пример - вот сейчас отвечаю на форуме. Помню в одном из своих постов затрагивал подобную тему. И помню, что это было на стр. 3. Иду и смотрю. Записей пока мало, поэтому можно помнить страницы. ;)

  • Денис Болтиков :

    Это исключение только подтверждающее правило :)

    P.S. Интересно, а есть плагин, который запоминает введенные личные данные при комментарии?

  • Delchyve :

    Думаю да. Точнее не столько плагин, сколько одна из функций какого-нибудь другого плагина. Хотя реализация проста - надо просто внести все в Cookies.

  • Денис Болтиков :

    Все равно самому не охото заниматься реализацией.

  • Delchyve :

    Вот тебе как пример blog.sribna.com. Здесь стоит плаг, который запоминает пользователей.

  • Lis :

    у меня не работает. вставил куда нужно. Просто весь этот код вылазит текстом на странице.

  • Delchyve :

    А
    < ?php ... ?>
    не забыл? Хочешь давай мыло, я тебе сброшу код.

  • Lis :

    2Delchyve: да я в этих пхп не шарю:) шаблон свой редактировал методом тыка.

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

  • Delchyve :

    Lis, отправил письмо. Лови :)

  • Денис Болтиков :

    До меня дошло как можно использовать подобный плагин. Он повышает скорость индексации сайта и количество страниц второго уровня проиндексированных в сапе :)

  • Delchyve :

    Хм, а ведь это и правда так, судя по логике вещей. Как то в голову не приходило. Почему раньше не догадывались )).

  • Денис Болтиков :

    Видно просто такой задачи не стояло :) А я сейчас составлю методичку по раскрутке блога :)

  • Delchyve :

    Если честно, да. Хоят задача раскрутки до сих пор не стоит, т.к. в этом деле полный профан.

    А я сейчас составлю методичку по раскрутке блога

    Склоняю голову. Как будет распространяться?

  • Денис Болтиков :

    Теоретическую часть выложу в блоге. Параллельно буду раскручивать свой блог и описывать живые результаты :)

    Хотя до выполнения задачи минимум попасть в топ5000 русскоязычных блогов осталось совсем немного, надо уже другие цели ставить :)

  • Lis :

    Спасибо. Вставил, но появляется проблема, выдает вот что:

    Страницы (999999): 1 2 3 4 5 …В конец

    Когда нажимаешь в конец ведет на страницу 999999 и соответственно Url not found

  • Delchyve :

    Странно. То что я тебе скинул - это рабочий вариант кода. Пример работы здесь в блоге.
    Ладно, в аську можешь стукнуть? - 25один-14семь-95семь

  • Lis :

    да я аську не юзаю, ладно, значит не судьба. Просто точь такая же байда была, когда я пытался сделать страницы с помощью плагина, вот думал мож просто код проканает…не проканал. Наверное версия вордпресс старая. Но все равно, спасибо.

  • Delchyve :

    хз, ВП должен быть тогда очень старый. Код работает в версиях начиная с 2.0.9 точно. Не думаю что в версиях раньше были серьезные различия. В новой линейке код тоже должен работать.
    Если хочешь можешь прислать мне тему, которую ты используешь (только желательно тему, а не ссылку на скачивание). Мыло мое у тебя есть. С него код присылал.

  • Lis :

    Тему юзаю от Блогингпро, вот эту, которая на их сайте также стоит:
    http://www.bloggingpro.com/archives/2007/03/21/blogging-pros-theme-released/

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

  • Otorva :

    Спасибо. Вставил, но появляется проблема, выдает вот что:

    Страницы (999999): 1 2 3 4 5 …В конец

    Когда нажимаешь в конец ведет на страницу 999999 и соответственно Url not found

    Вот и у меня тоже самое

  • Delchyve :

    Вот здесь поднял тему.
    Определенно проблемы с плагином в новых версиях WP есть.

  • Delchyve :

    Плагин обновился и подрос. Так что прошу всех на страницу разработчика. Там можно скачать последнюю версию :)

  • untaboo :

    как можно сделать навигацию не по количеству постов а по дням (”день вперёд” и “день назад”) ?

  • Delchyve :

    untaboo, я подумаю. Если что получиться - с меня пост. )

  • untaboo :

    Delchyve очень буду благодарен! спасибо)!

Оставьте черный или белый комментарий :)

HTML: разрешено использование: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>