Flector

WP-CommentNavi

Как ни странно, но создатели WordPress никак не хотят добавить в движок постраничную навигацию, отдавая эту функцию на откуп различным плагинам. То есть формально то постраничная навигация в WordPress существует, но ограничена строго двумя страницами – "предыдущая" и "следующая", что естественно, мало кого устраивает. В WordPress 2.7 появилось долгожданное нововведение в виде разделения комментариев на страницы, но с той же проблемой, что и всегда: для более-менее нормальной настройки навигации по этим страницам нам придется использовать дополнительный плагин WP-CommentNavi, о нем и будет идти речь. До установки плагина навигация у нас будет выглядеть так:

После установки плагина мы получим что-то похожее на:

После небольшого изменения кода плагина и css стилей можно добиться совершенно различного вида этой навигационной панельки:

Скачиваем оригинальный плагин с его домашней страницы или берем русскую версию тут, устанавливаем:

1. Распаковываем архив.

2. Копируем папку wp-commentnavi в /wp-content/plugins/.

3. Заходим в админку блога на вкладку "Плагины" и активируем плагин.

Чтобы встроить навигацию в ваш шаблон найдите в файле comments.php строчки (на примере шаблона Default):

<div class="navigation">
	<div class="alignleft"><?php previous_comments_link() ?></div>
	<div class="alignright"><?php next_comments_link() ?></div>
</div>

И замените их на:

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

По умолчанию ссылку на страницу всех комментариев плагин не выдает, ее надо выводить отдельным кодом:

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

Надо заметить, что плагин будет работать только если вы вставили оба эти кода строго после цикла The Comment Loop. То есть вывести навигацию перед выводом самих комментариев у вас не получится.

Постраничная навигация по комментариям у вас уже работает, а настройки выводимого текста вы можете изменить в Параметрах\CommentNavi. Не хочу повторяться со своими настройками, которые я уже описывал в статье о плагине WP-PageNavi - если вам это необходимо, то возьмите их там (автор плагина один и тот же и настройки плагинов практически идентичны).

Теперь стоит поговорить о мелких хаках, которые можно применить к плагину. Первым делом я избавил себя от головной боли с настройкой вывода через css ссылки на все комментарии. Я вставил ее в сам плагин, вы тоже можете это сделать заменив в файле wp-commentnavi.php строчку:

127
case 1:

на

127
128
case 1:
	wp_commentnavi_all_comments_link('Все');

Затем я избавился от вывода ссылок на предыдущую и следующую страницы (не заполнив эти поля в настройках плагина вы от этих ссылок все равно не избавитесь). Для этого надо удалить строчки:

139
previous_comments_link($commentnavi_options['prev_text']);

и

149
next_comments_link($commentnavi_options['next_text'], $max_page);

Следующее, что мне показалось неправильным это то, что ссылка на последнюю страницу комментариев выглядит как /name.html/comment-page-2#comments вместо того, чтобы показывать /name.html#comments. Ведь в таком случае получается, что у нас есть две абсолютно одинаковые страницы с одним и тем же контентом (даже комментарии будут такими же), но с разными ссылками. С точки зрения SEO дубликаты страниц это плохо и я слегка модифицировал плагин, чтобы избежать такой ситуации. Для этого надо заменить строку:

146
echo '<a href="'.clean_url(get_comments_pagenum_link($i)).'" class="page" title="'.$page_text.'">'.$page_text.'</a>';

на строки:

146
147
148
149
150
if ($end_page != $max_page or $i != $end_page) {
echo '<a href="'.clean_url(get_comments_pagenum_link($i)).'" class="page" title="'.$page_text.'">'.$page_text.'</a>'; }
if ($end_page == $max_page and $i == $end_page) {
$last_page_text = str_replace("%TOTAL_PAGES%", number_format_i18n($max_page), $commentnavi_options['last_text']);
echo '<a href="'.clean_url(get_permalink()).'#comments" class="last" title="'.$last_page_text.'">'.$last_page_text.'</a>';}

а также заменить строку:

159
echo '<a href="'.clean_url(get_comments_pagenum_link($max_page)).'" class="last" title="'.$last_page_text.'">'.$last_page_text.'</a>';

на:

159
echo '<a href="'.clean_url(get_permalink()).'#comments" class="last" title="'.$last_page_text.'">'.$last_page_text.'</a>';

На этом изменения плагина закончены. Но вы вовсе не обязаны что-либо менять, так как плагин будет нормально работать и без этих хаков. Изменить настройки выводимой панельки навигации можно через изменение стилей в файле commentnavi-css.css. Если кому интересно, то приведу свой стиль (посмотреть как он выглядит можно в статье WP-Cumulus):

.wp-commentnavi {
	padding-top: 10px;
	padding-bottom: 10px;
}
.wp-commentnavi a, .wp-commentnavi a:link, .wp-commentnavi a:visited  {
	padding: 3px 6px 3px 6px; 
	margin: 2px 0px 2px 0px;
	border-top: 1px solid black;
	color: #FFFFFF;
	background-color: #4f4f4f;	
	font-size: 11px;
	font-weight: bold;
	text-decoration: none;
}
.wp-commentnavi a:hover {
	border-top: 1px solid black;
	color: #FFFFFF;
	background-color: black;
	font-weight: bold;
	text-decoration: underline;	
	font-size: 11px;
}
.wp-commentnavi span.pages {
	padding: 3px 6px 3px 6px;
	margin: 2px 0px 2px 0px;
	color: #FFFFFF;
	border-top: 1px solid black;
	background-color: #4f4f4f;
	font-weight: bold;
	font-size: 11px;
}
.wp-commentnavi span.current {
	padding: 3px 6px 3px 6px;
	margin: 2px 0px 2px 0px;
	font-weight: bold;
	border-top: 1px solid black;
	color: #FFFFFF;
	background-color: black;
	font-size: 11px;
}
.wp-commentnavi span.extend {
	padding: 3px 0px 3px 0px;
	margin: 2px 0px 2px 0px;
	border-top: 1px solid black;
	color: #FFFFFF;
	background-color: #4f4f4f;
	font-weight: bold;
	font-size: 11px;
}
.wp-commentnavi-all-comments-link {
	border-right: 1px dotted black;
	border-left: 1px dotted black;
}

 

Автор плагина: Lester "GaMerZ" Chan
Страница плагина: http://wordpress.org/extend/plugins/wp-commentnavi/
Рассматриваемая версия: 1.10 от 08.06.2008
Совместимость с версией WordPress: 2.8 и выше.

Понравился пост? Подпишись на обновления по Обновления блога по RSSRSS или Обновления блога на TwitterTwitter !

Комментарии (всего 86 комментариев)
Написать комментарий

(обязательно)

(обязательно, не публикуется)

Для вставки кода используйте кнопку "Код", по умолчанию используется синтаксис подсветки языка "php", вы можете поменять его на любой другой поддерживаемый GeSHi язык, например "javascript", "css", "html4strict", "sql" и тд. Используйте предпросмотр!
 


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