В этой статье я покажу как можно на сайте сделать красивый и настраиваемый топ комментаторов при помощи скрипта без плагинов.
В прошлой статье были расписаны настройки плагина для WordPress, который выполняет те же функции, и выводит в сайдбаре блога список топ комментаторов.
Для тех, кто отдает предпочтение плагинам, и не любит вносить различные изменения в код, он вполне подойдет. Вы можете спросить: зачем тогда скрипт, если плагин хорошо справляется с этой задачей?
Все очень просто: скрипт подойдет для тех, кто не любит загружать блог большим количеством плагинов, которые создают дополнительную нагрузку.
Так выглядит внешне топ комментаторов, точнее его работа:
У меня на блоге, в сайдбаре Вы можете его видеть. Скрипт имеет все нужные настройки:
- Можно настроить будут ли отображаться топ комментаторы за месяц или за все время;
- Нужно ли в скобках показывать количество оставленных автором комментариев;
- Заключать ли ссылки на сайты авторов в тег «nofollow»;
- Сколько по количеству отображать комментаторов;
- Количество колонок с комментаторами;
- Какой размер аватарок показывать;
- Какие e-mail адреса исключить из топа (например, Ваш)
Как установить скрипт топ комментаторов без плагинов
Первое, что нужно сделать, это найти в Вашей теме файл, под названием functions.php (на всякий случай сделайте копию файла, чтобы в случае чего можно было все восстановить) . Открыть его в редакторе . Я настоятельно рекомендую пользоваться текстовым редактором Notepad++, так как он умеет корректно работать с кодом. Перемещаемся в самый низ этого файла, находим закрывающий тег
?>
который находится в самом низу. Теперь, перед эти тегом нужно вставить следующий код:
/* комментаторы без плагинов*/ function top_commentator(){ global $wpdb; $month = false; /* true - за текущий месяц, false - за все время*/ $comment = true; /* показывать количество комментариев*/ $nofollow = true; /* ссылки nofollow*/ $noindex = true; /* ссылки noindex*/ $count = 6; /* количество комментаторов*/ $col = 3; /* количество колонок*/ $avatarSize = 60; // размер аватара $exceptionEmail = 'mail@mail.ru'; /* мыло-исключение, например Ваше*/ $results = $wpdb->get_results(' SELECT COUNT(comment_author_email) AS comments_count, comment_author_email, comment_author, comment_author_url FROM (select * from '.$wpdb->comments.' order by comment_ID desc) as pc WHERE comment_author_email != "" AND comment_type = "" AND comment_approved = 1 AND comment_author_email NOT IN ('.preg_replace('/([\w\d\.\-_]+@[\w\d\.\-_]+)(,? ?)/','"\"\',$exceptionEmail).')'. ($month ? 'AND month(comment_date) = month(now()) AND year(comment_date) = year(now())' : ''). 'GROUP BY comment_author_email ORDER BY comments_count DESC LIMIT '.$count ); $output = "<div class='top-comment'><table><tr align='center' valign='top'>"; $i = 0; foreach($results as $result){ if ($i>=$col) { $output .= "</tr><tr align='center' valign='top'>"; $i = 0; } $i++; $output .= "<td><div class='avatar-top'>".get_avatar($result->comment_author_email,$avatarSize)."</div><div class='avatar-comment'>"; if ($result->comment_author_url) if ($nofollow) $output .= "<noindex><a rel='nofollow' target='_blank' href='".$result->comment_author_url."'>".$result->comment_author."</a></noindex>"; else $output .= "<noindex><a rel='nofollow' target='_blank' href='".$result->comment_author_url."'>".$result->comment_author."</a></noindex>"; else $output .= $result->comment_author; if ($comment) $output .= " (".$result->comments_count.")"; $output .= "<div style='clear:both;'></div></div></td>"; } if ($i<=$col) $output .= "</tr>"; $output .= "</table></div>"; echo $output; } ?>
В коде, если Вас не устраивают стандартные настройки, пропишите свои (изменяемые настройки выделены оранжевым цветом ).
Теперь нужно открыть файл темы sidebar.php (если Вы хотите вставить топ комментаторов в боковую колонку) в нужное место вставить следующий код:
<?php top_commentator(); ?>
Я, посмотрев как выводятся виджеты в боковой колонке моего шаблона, этот код для своего шаблона прописала немного по-другому, вот так:
<div class="widget"> <h3 class="widgettitle">Лучшие комментаторы</h3> <?php top_commentator(); ?></div>
Настройка вида скрипта топа комментаторов без плагинов.
И, теперь, для того чтобы вывод топ комментаторов выглядел симпатично, нужно открыть файл style.css, и туда добавить следующий код:
/*top comment*/ .top-comment { height:100%; } .top-comment table { min-height: 100%; height:100%; border:none; } .top-comment table td { padding:0 5px 15px 5px; border:none } .top-comment .avatar-top img { -webkit-box-shadow: #666 0px 2px 3px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; padding: 3px; background: white; border-image: initial; border: 1px solid #aaa; margin: 0 0 3px 0; } .top-comment .avatar-comment { font-size: 12px; display:block; line-height:1.25em; margin-top:2px; width:90px }
Ну, вот и вся установка. Не забудьте все файлы сохранить и закачать на хостинг. Можно, конечно, редактировать эти файлы прямо в админке wordpress, в разделе «Редактор», но я предпочитаю первый способ. Описала весь процесс как делала сама.
Если у Вас будут вопросы по установке скрипта топ комментаторов без плагинов, пишите в комментариях, будем разбираться.
Написала такой код скрипта:
function top_commentator(){
global $wpdb;
$month = true;
$comment = 5;
$nofollow = true;
$count = 5;
$col = 2;
$avatarSize = 40;
$exceptionEmail = ‘mail@gmail.com’; // galyul@yandex.ru
Почему-то топ не отражается. Что ему не хватает?
Юлия, сложно сказать по этому маленькому кусочку кода, что ему не хватает Проверьте правильно ли вставлен весь код. Попробуйте вместо второго куска кода оставить только эту часть:
и посмотрите отобразятся ли комментаторы
я не могу понять в какое место вставлять код в этих папках sidebar.php и style.css
только что попробовала, сайт закрылся(( хорошо, что папку до этого сохранила, пришлось на хостинг ее заново залить, но в пот пробило хорошо так
Только не в папках, а в файлах . В файл style.css код нужно вставлять в самый низ, перед закрывающим тегом: ?>. А в файл sidebar.php код нужно вставить в то место, где Вы хотите чтобы появились комментаторы, обычно они выводятся после всех виджетов. Точно сказать сложно, все зависит от шаблона, который Вы используете. Обязательно делайте копию файлов, чтобы можно было все вернуть наместо.
Спасибо, попробую позже. Честно, уже боюсь лезть в эти файлы. Вчера после моих проделок, вместо страницы «главная» теперь «краказябра»
Светлана, у меня нет в файле style.css тега ?>
не могу понять куда же его вставить
А у меня сайт пропал после вставки кодов вернул всё на место-всё равно нету его…Вот делааааааааааа… щас буду ремонтировать…
Блин,лучьше бы не лез в эти коды Придётся теперь тему менять
Значит что-то не так вставили, пробуйте ещё. Главное иметь копию файлов .
Если не получается с кодом, поставьте плагин, о котором написано здесь: http://svetlanaslobodeniuk.com/plagin-wordpress-top-kommentatorov-top-commentators-widget.html и не мучайтесь.
Везде вижу один и тот же скрипт. Но никто не может помочь решить проблему. Вставляю код вывода. У меня все работает, только мой аватар берется как главный и у всех комментаторов мой аватар. не знаю как исправить….
Алишер, вижу Вы уже решили проблему с авататами . Или речь идет о другом сайте?
Спасибо Автору, всё работает отлично!
Доброе время суток Светлана.
За эти 10 дней отпуска с семьёй ,изголодался от информации.
Сразу с поезда в интернет.
Заинтересовал Ваш сайт.
А именно эта статья, (топ комментаторов при помощи скрипта без плагинов).
Написана подробно.
Но я сначала попробую плагин для Word Press
Благодарен
А в noindex ссылки закрываются?
закрываются
Пользуюсь данным скриптом, но у меня в настройках стоит чтобы каждый месяц счетчик учета комментариев обнулялся. Как прописать в этом коде чтобы надпись появлялась когда нет ни одного комментария, например «Будь первым»?
Доброе время суток !
Поздравляю с наступающим Новым Годом 2013 г
Попробовал плагин для Word Press работает.
Но правда у меня мало комментариев.
То что надо хотел добавить на свой сайт и чтоб без плагинов. надеюсь будет работать а то и за моей темы созданной в артистере не работают не какие ново введения только плагины. Кстати если у меня плагин комментарии из контакта то такие комментарии тоже будет выводить?
Нет, комментарии из контакта выводится не будут, только те, которые оставлены на блоге в форме комментирования.