
Скрипт для отображения топ-комментаторов и как вывести его в sidebar.
Добрый день! В некоторых старых статьях я мельком намекал на то, что если на сайте будет установлено много плагинов, то его работа может существенно замедлиться. Лучшим вариантом из сложившейся ситуации будет замена некоторых плагинов на «голый код» с которым движок Wordpres-а работает куда лучше. И в этой статье я опишу как уставить скрипт «Топ-комментаторов» за место всем известного нам плагина Top Commentators Widget.
Идея эта совсем не новая и о самом скрипте я узнал благодаря другим блогерам. Посмотрев на их блогах, как выглядит и работает этот скрипт, я загорелся желанием поставить его на своем сайте.
Для поиска данного скрипта я обратился к Google. Спасибо тебе Google, что ты есть!
Код я нашел, скачал и установил. Но возникла маленькая проблем ка. Список «Топ-комментаторов» так и не стал отображаться в сайдбаре моего блога. Как выяснил я позже, для отображения списка комментаторов в сайдбаре необходимо прописать так называемый шорткод, но что бы он работал нам необходимо в файле function.php сделать небольшое изменение.
Итак, давайте все это разберем поподробнее. Ход наших действий:
- Копируем код скрипта и устанавливаем себе на блог.
- Прописываем стили.
- Вставляем шорткод в sidebar.
- Делаем шорткоды в сайдбаре рабочими.
- Настройка.
1.Копируем код скрипта и устанавливаем себе на блог.
Копируем код расположенный ниже и вставляем его у себя в файле function.php, который находится в Админ панель->Внешний вид-> Редактор -> function.php. Вставлять код нужно после <?php
Вот и сам код:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | // комментаторы без плагина function sp_top_commentator(){ global $wpdb; $length = 8; // Максимальная длинна имени в символах, если стоит 0, то имя не обрезается $month = true; // true - за текущий месяц, false - за все время $comment = true; // показывать количество комментариев $nofollow = true; // ссылки nofollow $count = 12; // количество комментаторов $col = 4; // количество колонок $avatarSize = 55; // размер аватара $exceptionEmail = 'krendelkar@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\.\-_]+)(,? ?)/','"\\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 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) if ($nofollow) $output .= "<a target='_blank' rel='nofollow' href='".$result->comment_author_url."'>".$result->comment_author."</a>"; else $output .= "<a target='_blank' 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; } // комментаторы без плагина |
2. Прописываем стили.
Для хорошего визуального оформления и работы скрипта заходим в файл style.php и в конце дописываем следующее:
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 26 27 28 29 30 31 32 33 34 35 36 37 | //стили топ комментаторов .top-comment { height:100%; } .top-comment table { min-height: 100%; height:100%; width:100%; } .top-comment table tr { text-align:center; vertical-align: top; } .top-comment table td { padding:0 5px 15px 5px; } .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; } //стили топ комментаторов |
3. Вставляем шорткод в sidebar.
Как вы уже догадались, для того, что бы увидеть работу нашего скрипта, нам необходимо прописать в sidebar, который находится в Админ панель-> Внешний вид-> Виджеты следующий код:
1 | <?php sp_top_commentator(); ?> |
4.Как заставить работать шорткоды в сайдбаре
Но это еще не все. Большинство блогов не поддерживают работу шоркодов в sidebar. Поэтому заходим в Админ панель->Внешний вид-> Редактор -> function.php и после надписи <?php вставляем этот код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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; } |
5. Настройка
Ну и заключительным этапом является настройка. Все изменения введутся в самом коде, благодаря чему мы можем менять такие параметры как: размер аватара, число выводимых комментаторов, длина имен, изменять индексацию ссылки, количество колонок.
$length = 0; — Максимальная длинна имени в символах, если стоит 0, то имя не обрезается. Советую немного обрезать имя, иначе из за длинных имен отображение аватаров сместиться и это будет выглдить не красиво.
$month = false; — true — за текущий месяц, false — за все время. Если у вас блог сильно комментируемый, то ставьте true
$comment = true; — показывать количество комментариев. Здесь по вашему желанию.
$nofollow = true; — ссылки nofollow. Если поставите false, то поисковые машины будут индексировать ссылки комментаторов, что отрицательно будет сказываться на вашем блоге.
$count = 12; — количество комментаторов. На ваше усмотрение.
$col = 3; — количество колонок.
$avatarSize = 40; — размер аватара. Эксперементируйте, подгоняйте к дизайну вашего блога.
$exceptionEmail = ‘mail1@dom.ru, mail2@mod.ru’; — мыла-исключения. Обычно блогеры вписывают свои адреса почтовых ящиков, так как нет им смысла у себя на блоге находится на первом месте в рейтинге «топ-комментаторов».
P.S. — данный скрипт был разработан автором блога SEOлётика. За что ему большое спасибо!
Удачи Вам в работе!
Сань,пользовался я скриптом около года.
А потом все слетело,не пойму что,пришлось установить плагин.
Может плагин какой то со скриптом конфликтует? У меня уже 2 год работает и все в порядке.
Хотя на тестовом блоге,данный скрипт пошел.
Это лучше чем плагин,меньше нагрузки на движок.
Отличный скрипт! Скопировал, вставил и всё работает. Да и расписано всё очень грамотно. Необходимо избавляться от плагинов, всё-таки нагрузка будет меньше и глазу приятнее, когда видишь малый список установленных плагинов.
Один из самых лучших скриптов, мне он тоже нравиться, давно уже у меня стоит.
Нужно будет подумать. Думаю для начала устанавлю все плагины, потом приведу блог примерно к такому виду, как я на первое время его вижу, а дальше по возможности поменяю все что можно с плагином на скрипты 😉
Скрипты тоже могут грузить сайты, даже пострашнее плагинов. Зависит от числа запросов к серверу.
Ну вот, наконец-то мои руки добрались до этого скрипта. Только что всё сделал по вашей инструкции. Скрипт работает отлично. Пока что на денвере, но скоро и на сервере. Огромное вам спасибо!
А вы все сначало тестируете на денвере?
Естественно, так безопаснее. Если что-то пойдёт не так, то это можно легко исправить, не то что на сервере.
Кстати да, обычно я что-нибудь не то сделаю и потом в панике пытаюсь исправлять 😉 нужно будет вспомнить как денвер устанавливаеться и как с вордпрессом контаетирует. Думаю можно всё что хочу сделать сначало на компе отточить. 😉
У моего друга такая же проблема. Неужели только я один до этого додумался? Думаю, каждый блоггер беспокоится о сохранности своего детища.
В крайнем случаи Бэкап всегда выручит, так что не трусти:)
Ну с бэкапом также бывают проблемы на некоторых недобросовестных хостингах. А вообще кому как удобнее, просто некоторым не хочется засорять свой компьютером денвером.
Думал поставить себе плагин с топом комментаторов, но наверное легче код прописать, хотя..
Возник вопрос, а если менять дизайн и тему, нужно все заново прописывать? Если да, то с плагином легче 😉
Если менять тему, то нужно все заново прописывать, т.к. файл function.php у каждой темы свой отдельный.
А так, этот скрипт во много раз лучше плагина.
Саша, а этот сккрипт будет полегче плагина?
А то я уже ставил себе в блог плагин с Топом лучших комментаторов, а сейчас хочу с помощью кода.
Стоит шкурка вычинки?
Скрипт в 100 раз лучше плагина. Я зуб ставлю, что это так! 😛
Пожалуй, добавлю эту страницу в закладки. Уж очень она мне понравилась) Может быть когда-нибудь попробую.
Да, в самом начале после<?php вставляешь код топ комментаторов. Если комментарии отображаться не будут в сайдбаре, то тогда тебе надо вначале после <?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; }
а потом вставить сам код.
Если будут проблемы стучись в скайп помогу. мой скайп meagol2
попробую второй раз установить. За ретвит спасибо. Меня забанили в ретвите что можно сделать не знаете?
я заговорился в твитере бан
Просто так они банить не будут:)
начал действовать по инструкции сайт перестал открываться? Админ панель->Внешний вид-> Редактор -> function.php. Вставлять код нужно после <?php это php вначале стоит?
Долгое время жил без топа комментаторов. Недавно поставил, веселее стало ))
Вот и я вчера решился разжиться на Топ. Поставил сразу во второстепенном блоге. Сейчас поставлю и на главном, с которого пишу.
Ещё раз спасибо за статью, Саша! Всё получилось чётко 😉
Ага, народ начинает сразу блог комментировать. Плюс в скрипке есть код с выводом лучших комментаторов за последний месяц, благодаря чему можно устроить конкурс комментаторов.
Во, в нашем полку прибыло. Хорошая статья, я аж на скрине засветился :).
Ага)) теперь у меня есть доказательства, что ты посещал мой блог)
Вроде бы все доступно, читала про скрипт топ-комментаторов много, но самой боязно ставить. Пока использую плагин, наверное, стоит рискнуть!
У меня тоже плагин вначале стоял, потом узнал про скрипт, установил его себе на блог и нисколько об этом не жалею. Тут нечего бояться:)
Интересная статья, во всяком случае я думаю, что лучше все это делать с помощью кода. Во-первых, получаешь практические навыки. Во-вторых, использование кода, вместо плагинов реально ускоряет загрузку страниц сайта. Поэтому спасибо Александр. И кстати Александр, у каскадных таблиц стилей расширение CSS, а не PHP. Исправьте вот тут "Прописываем стили."
Хорошо, посмотрю и исправлю.