Плагин вывода топ комментаторов с граватарами для wordpress

Плагин вывода топ комментаторов для wordpressНедавно один из читателей моего блога задал мне такой вопрос «Сергей – с помощью какого плагина у вас выводиться топ комментаторов с граватарами»

Сам плагин общеизвестный и называется он: show top commentators

Но те, кто ставил его на свой блог, заметят – граватары данный плагин не выводит.

Поэтому продеться ручками его этому научить.

На одном блоге я уже видел попытку решить проблему, но решение содержало ошибку и не работало.

Но обо всем по порядку.

  • Скачиваем плагин по ссылке;
  • Заливаем в папку с плагинами;
  • Активируем плагин;

Плагин установлен и готов к работе.

Вывод плагина топ комментаторов

Сделать это несложно, просто добавить его в сайдбар, через панель виджетов.

Но есть одно но, в плагине не предусмотрена работа в виде виджета.

Поэтому нужно вручную сделать из него виджет либо просто вставить в сайдбар.

Вставка в sidebar

Открываем файл sidebar.php

И вставляем между этих строк:

1
2
3
<?php if(function_exists('ns_show_top_commentators')) { ?>
   
<?php } ?>

Разберем немного, зачем эти две строки.

Это проверка на включенность виджетов в админке блога.

Если виджеты активны, то код между строк проверочного выражения не будет работать:

Плагин вывода топ комментаторов для wordpress

В нашем случае плагин «топ комментаторов» не будет выведен

А если виджеты в админке не активны:

Плагин вывода топ комментаторов для wordpress

То код внутри строк проверочного выражения сработает. И наш плагин будет благополучно работать.

Вернемся к нашим баранам.

Вставляем данный код:

1
2
3
4
<li>
    <h2>Топ комментаторов</h2>
    <ul><?php ns_show_top_commentators(); ?></ul>
</li>

Должно выйти вот так:

1
2
3
4
5
6
<?php if(function_exists('ns_show_top_commentators')) { ?>
    <li>
    <h2>Топ комментаторов</h2>
    <ul><?php ns_show_top_commentators(); ?></ul>
    </li>
<?php } ?>

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

Вот так:

1
2
3
4
5
6
<?php if(function_exists('ns_show_top_commentators')) { ?>
<?php } ?>
    <li>
    <h2>Топ комментаторов</h2>
    <ul><?php ns_show_top_commentators(); ?></ul>
    </li>

Создание виджета

Процесс создания виджета сложнее в силу того, что он от темы к теме меняется.

Поэтому покажу его на примере темы которую использую я.

В файл functions.php вставляем такой код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php function Vid_Top_Comment(){
?>
    <div class="dbx-box">
     <h3 class="dbx-handle">Топ комментаторов</h3>
       <div class="dbx-content">
<li>
    <h2>Топ комментаторов</h2>
    <ul><?php ns_show_top_commentators(); ?></ul>
    </li>
</div>
</div>
<?php
}
if ( function_exists('register_sidebar_widget') )
    register_sidebar_widget(__('Top_Comment'), 'Vid_Top_Comment');
?>

Разберем немного код:

1
function Vid_Top_Comment()

В этой строке мы создали функцию под названием «Vid_Top_Comment».

Vid_Top_Comment – это название я придумал сам. Сокращенно от «виджет топ комментаторов».

1
2
3
<div class="dbx-box">
     <h3 class="dbx-handle">Топ комментаторов</h3>
       <div class="dbx-content">

Эти дивы отвечают за оформления сайдбара в моей теме. Если их не использовать, то наш плагин не впишется в общий дизайн.

1
register_sidebar_widget(__('Top_Comment'), 'Vid_Top_Comment');

В последней строке мы даем нашему виджету имя: «Top_Comment» которое будет отображаться в админ панели.

Учим плагин топ комментаторов выводить граватары

Для этого нам придеться залезть во внутренности плагина.

Открываем файл show_top_commentators.php

Ищем блок:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if(is_array($commenters)) {
       foreach ($commenters as $k) {
          if($ns_options["make_links"] == 1) {
            $url = ns_get_user_url($k->comment_author_email);
          }
          echo $ns_options["start_html"];
          if(trim($url) != '' && $ns_options["make_links"] == 1) {
             echo "<a href='" . $url . "'>";
          }
          echo ns_substr_ellipse($k->comment_author, $ns_options["name_limit"]);
          if(trim($url) != '' && $ns_options["make_links"] == 1) {
             echo "</a>";
          }
          if($ns_options["number_of_comments"] == 'y') {
                 echo " (" . $k->comment_comments . ")\n";
          }
          echo $ns_options["end_html"] . "\n";
          unset($url);
       }
    } else {
      echo $ns_options["start_html"] . $ns_options["none_text"] . $ns_options["end_html"];;
    }

Именно он отвечает за вывод списка. Его-то нам и нужно заменить.

Вместо предыдущего кода вставляем этот:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
if(is_array($commenters)) {
       foreach ($commenters as $k) {
          if($ns_options["make_links"] == 1) {
            $url = ns_get_user_url($k->comment_author_email);
          }
          echo $ns_options["start_html"];
          echo get_avatar( $k->comment_author_email, $size = '18');
          if(trim($url) != '' && $ns_options["make_links"] == 1) {
          echo "<a href='" . $url . "'>";
          }
          echo " ";
          echo ns_substr_ellipse($k->comment_author, $ns_options["name_limit"]);
          echo "";
          if(trim($url) != '' && $ns_options["make_links"] == 1) {
          echo "</a>";
          }
          if($ns_options["number_of_comments"] == 'y') {
                 echo " (" . $k->comment_comments . ")\n";
          }
          echo $ns_options["end_html"] . "\n";
          unset($url);
       }
    } else {
      echo $ns_options["start_html"] . $ns_options["none_text"] . $ns_options["end_html"];;
    }

Размер иконки граватара находиться в этой строке:

1
echo get_avatar( $k->comment_author_email, $size = '18');

Меняем значение «size» на свое. Size указан в пикселах

Вот собственно и все. Наш плагин топ комментаторов выводить комментаторов вместе с их граватарами.

Если вас пугают манипуляции с кодами. То можете скачать готовый файл плагина с внесенными изменениями.

Настройки плагина вывода топ комментаторов

Собственно панели настроек у него тоже нет. Все настройки находятся в файле плагина:

1
2
3
4
5
6
7
8
9
10
11
12
$ns_options = array(
    "reset" => "80", //через какой период обнулять счетчик hourly (час), daily (день), weekly (неделю), monthly (месяц), yearly (год), all (не обнулять) или просто указываете число дней
    "limit"  => 5, //число выводимых комментаторов в топе
    "filter_users" => "Administrator,admin", //исключение ников тех, кто не должен участвовать в топе (через запятую).
    "filter_user_ids" => "1,2", //исключение ID тех, кто не должен участвовать в топе (ID разделяются запятой).
    "filter_urls" => "", //не показывать в топе указанные ссылки (опять разделяем запятыми).
    "none_text" => "None yet!", //текст, показываемый, если комментаторов в блоге еще нет.
    "make_links" => 1, //включение и выключение показа ссылок на сайт комментирующих (1 - да, 2 - нет).
    "number_of_comments" => "y", //показывать или нет число комментариев в топе (y - да, n - нет).
    "name_limit" => 28, //ограничение в числе символов для ников (1 - неограниченно).
    "start_html" => "<li>", //тег (или текст) перед ником комментатора.
    "end_html"   => "</li>

И после нашей модификации появилась еще одна настройка.

Это размер граватара.

На этом закончу данную статью. Удачи!!!

С уважением Тригуба Сергей!

Поломались компьютеры, а вы не знаете, что делать? Наша фирма выполнит ремонт компьютеров быстро и качественно.

P.S. В силу того, что плагин считает комментарии за определенный период. То при установке он может ничего не показывать кроме надписи указанной в настройках. Но стоит добавить комментарий и все станет на свои места.

Интересное — планшет от Acer

Автор:
Приглашаю присоединиться ко мне в следующих сервисах:
Получайте новые статьи по созданию сайтов на ваш почтовый ящик.

Комментарии Вконтакте:

Комментарии Facebook:

Комментариев28 комментариев

Нужный плагин, спасибо попробую, Вас google первым выдал

Сильно много кода !! Нужно что-то попроще )

А можно ли отредактировать плагин top commentators widget так, чтобы вывод граватаров был в 2 столбца?

    Можно, код плагина написан на php. А, следовательно он результаты выдает в сухом виде. Все оформление делается с помощью: html и сss.

Написать ответ

Получай обновления блога первым!
Каталог@Mail.ru - каталог ресурсов интернет