Меню

Лучшие комментаторы? Все в топ! Кодом!

Привет всем!

Я тут при случае, прикупил у Александра Борисова курс “Анализ блога”. Отличная, скажу вам я, штука, рекомендую всем начинающим блоггерам. Просто, доступно,  дружелюбно и не дорого.

Так вот, одна из рекомендаций Борисова — это сделать на блоге топ лучших комментаторов.  Для привлечения дополнительного трафика, да и приятно ведь увидеть каждому свой лучезарный лик на другом блоге. А еще, очень часто многие блоггеры проводят конкурсы на лучшего комментатора, опять же, мало-мало денежков можно заработать при победе.

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

Прежде чем продолжить рассказ, хочу сказать спасибо за код блогу SEOлетик и его создателю под ником SlowProg.

Как говаривал Карлсон из мультика: “Продолжаем разговор!”

Добавляем код

Изменять будем файлы functions.php и для красивости таблицу стилей в виде файла style.css.

Внимание! Прежде чем что-то делать с вышеуказанными файлами, сделайте бэкап, что бы не было потом мучительно больно… Читаем как правильно вставлять коды в файл functions.php здесь

Вот код:

function sp_top_commentator(){
global $wpdb;
$length = 0;        // Максимальная длинна имени в символах, если стоит 0, то имя не обрезается
$month = false;     // true - за текущий месяц, false - за все время
$comment = true;    // показывать количество комментариев
$nofollow = true;   // ссылки nofollow
$count = 12;        // количество комментаторов
$col = 3;       // количество колонок
$avatarSize = 40;   // размер аватара
$exceptionEmail = [email protected], [email protected]'; // мыла-исключения
$lengthMin = 10;    // минимальное количество символов в учитываемом комментарии
$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.' where CHAR_LENGTH(comment_content) > '. $lengthMin .' 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\.\-_]+)(,? ?)/','"\\1"\\2',$exceptionEmail).')'.
($month ? 'AND month(comment_date) = month(now()) AND year(comment_date) = year(now())' : '').
'GROUP BY
comment_author_email
ORDER BY
comments_count DESC,
comment_ID ASC
LIMIT '.$count
);

$output = "<div class='top-comment'><table><tr>";
$i = 0;
foreach($results as $result){
if ($i>=$col) {
$output .= "</tr><tr>";
$i = 0;
}
$i++;
$output .= "<td><div class='avatar-top'>".get_avatar($result->comment_author_email,$avatarSize)."</div><div class='avatar-comment'>";
if ($length and $length<mb_strlen($result->comment_author)) $result->comment_author = trim(mb_substr($result->comment_author, 0, $length)).'.';
if ($result->comment_author_url)
$output .= "<a target='_blank' ".($nofollow?"rel='nofollow'":"")." href='".$result->comment_author_url."'>".$result->comment_author."</a>";
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;
}

Заходим в панель администрирования, выбираем меню Внешний вид —> Редактор и открываем файл functions.php.

Листаем файл в самый конец до тега ?>. Код нужно вставлять перед тегом ?>.

Топ комментаторов без плагина

Вставили? Отлично! Нажимаем кнопку обновить и дальше будем, собственно, делать визуализацию наших лучших комментаторов.

Поехали дальше…

к меню

Устанавливаем код в сайт бар и делаем красивости

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

<?php sp_top_commentator(); ?>

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

Но есть небольшой нюанс — WordPress не понимает код php в виджетах и выводит его как простой текст. Так что, потребуется научить ВП понимать такие коды. Для чего добавьте в файл functions.php небольшую функцию

add_filter('widget_text','sp_widget_execute_php',100);
function sp_widget_execute_php($text) {
if(strpos($text,'<?') !== false) {
ob_start();
eval('?>'.$text);
$text = ob_get_contents();
ob_end_clean();
}
return $text;
}

В принципе все готово, вас устраивает то, что получилось? Да? Почитайте еще что нибудь , например, как сделать PDF-файл, ведь каждому начинающему блоггеру, когда-нибудь потребуется создать книжку в формате PDF.

Как? Вам не нравиться что получилось? Тогда читаем дальше…Топ комментаторов без плагина

Сначала настроим код, вставленный в файл functions.php. Видите, с четвертой по десятую строку, идут переменные, вот они то нам и нужны.

  • Четвертая строка, переменная $month  — будет полезна для тех, кто ведет конкурс на лучшего комментатора ежемесячно, и если проводите конкурс каждый месяц, то ставьте true (истина). Я пока конкурсы не провожу, поэтому у меня стоит false (ложь), но скоро собираюсь проводить, поэтому не забудьте подписаться на новости, что бы ничего не пропустить.
  • Пятая строка, переменная $comment – если требуется отображать количество комментариев (вон посмотрите, справа у меня в сайтбаре после имени идут циферки), ставим true (истина).  Если не требуется – тогда ставим false (ложь).
  • Шестую строку оставляем как есть, там указывается: необходимо ли закрывать ссылки от индексации или нет.
  • Седьмая строка, переменная $count – вот теперь настраиваем внешний вид, в этой переменной указываем сколько комментаторов должно отображаться, у меня, например, отображается девять штук, как будет у вас, смотрите сами, все зависит от шаблона.
  • Восьмая строка, переменная $col – количество отображаемых столбцов, у меня три, если у вас сайтбар узкий, попробуйте поставить меньше, в общем фантазируйте.
  • Строка девять, переменная $avatarSize – здесь указываем размер аватарки, по умолчанию стоит 40 пикселей,  мелковаты получаются аватарки, поэтому я себе поставил 70 пикселей, а вы решайте сами, как вам больше нравиться.
  • Наконец, последняя, очень важная строка под номером десять, переменная  $exceptionEmail – вписываем адрес своей электронной почты, что бы исключить появление себя любимого в топе, естественно, если вы хотите лицезреть свою неотразимую аватарку, то можете не вписывать.

Настроили? Замечательно! Если что-то не получилось, напишите в комментариях, не стесняйтесь…

к меню

Последний штрих, выравниваем и украшаем аватарки

Открываем файл style.css и в самом конце вставляем такие строки:

.top-comment {
    height:100%;
}
.top-comment table {
    min-height: 100%;
    height:100%;
}
.top-comment table td {
padding:5px 25px 10px 0px;
border: 0px double red;
vertical-align: top;
text-align: center;
}
.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 #D0D0BB;
    margin: 0 0 3px 0;
}
.top-comment .avatar-comment {
    font-size: 12px;
}

Отлично! Нажимаем кнопку Обновить файл и наслаждаемся полученным результатом.

Писал два часа, а вся процедура занимает пару минут, так что не бойтесь кодов, делайте, фантазируйте. Если что-то отобразилось криво, спрашивайте…

Спасибо всем за внимание! Встретимся в следующей статье…

С уважением, ваш Абрамович Артем!

Поддержи проект лайком
62 комментария
  1. Татьяна / Ответить
    • Абрамович Артем / Ответить
  2. Дмитрий / Ответить
    • Абрамович Артем / Ответить
  3. Сергей / Ответить
    • Абрамович Артем / Ответить
  4. Елена Олейникова / Ответить
    • Абрамович Артем / Ответить
  5. Рашида Гарифулина / Ответить
    • Абрамович Артем / Ответить
    • Тамара / Ответить
  6. Fil / Ответить
    • Абрамович Артем / Ответить
      • Fil / Ответить
        • Абрамович Артем / Ответить
    • Елена Олейникова / Ответить
      • Александр / Ответить
      • Абрамович Артем / Ответить
  7. Татьяна Саксон / Ответить
    • Абрамович Артем / Ответить
  8. Сергей / Ответить
    • Абрамович Артем / Ответить
  9. Денис / Ответить
    • Абрамович Артем / Ответить
  10. Лана / Ответить
    • Абрамович Артем / Ответить
  11. Сергей Гвоздев дед / Ответить
    • Абрамович Артем / Ответить
  12. Тамара / Ответить
    • Абрамович Артем / Ответить
  13. Наталья / Ответить
  14. Рашида Гарифулина / Ответить
    • Абрамович Артем / Ответить
      • Рашида Гарифулина / Ответить
  15. Александр / Ответить
    • Абрамович Артем / Ответить
      • Александр / Ответить
        • Абрамович Артем / Ответить
          • Александр / Ответить
            • Абрамович Артем /
  16. Александр / Ответить
    • Абрамович Артем / Ответить
      • Александр / Ответить
        • Абрамович Артем / Ответить
        • Абрамович Артем / Ответить
          • Александр / Ответить
            • Абрамович Артем /
  17. Александр / Ответить
    • Абрамович Артем / Ответить
  18. Александр / Ответить
    • Абрамович Артем / Ответить
  19. Александр / Ответить
    • Абрамович Артем / Ответить
      • Александр / Ответить
        • Абрамович Артем / Ответить
          • Александр / Ответить
  20. Наталья Шепелева / Ответить
    • Абрамович Артем / Ответить
  21. Ксюша / Ответить
    • Абрамович Артем / Ответить
      • Ксюша / Ответить
        • Абрамович Артем / Ответить

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Подписка на новости

Спасибо за подписку! Теперь вам надо подтвердить ее.