WordPress Россия

Плагин WP-CommentNavi создает постраничную навигацию для комментариев.

Добавлено 4 апреля 2010 в категорию Плагины.

Как ни странно, но создатели 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

Страница плагина: [ссылка]

Рассматриваемая версия: 1.10 от 08.06.2008

Совместимость с версией WordPress: 2.8 и выше.

Категории