Допиливаем VKontakteApi (WP-плагин)

Всё отлично!

Используем неплохой плагин для WordPress’а от Забродского Евгения (kowack): VKontakte API.

Плагин позволяет наряду с обычными комментариями вставлять и видеть комментарии VKontakte и Facebook.

Бонусом идёт также возможность добавлять кнопки соц.сетей – PlusOne button, Tweet button, Mail.ru+Ok.ru button, Ya.ru button.

Для Вконтакте имеется также возможность добавлять кнопки Мне нравится и Поделиться.

Настроить плагин также относительно легко – достаточно зарегистрировать свои приложения в VK и FB, ввести их ключи и админский ключ для плагина. Все ссылки даются тут же на соотв. страницах настройки плагина.

В общем плагин неплохой, можно сказать отличный, но нам хотелось бы его немного переделать.

Что не так?

Плагин выводит комменты VK,FB и WP блоками, если один блок виден, то другие скрыты, появление блока происходит с медленным эффектом, что немного имхо раздражает.

Кроме того, почему-то кнопки и надпись Comments: на английском языке, хотя наш блог на русском (может это из-за того что админку мы юзаем на английском? не знаю, не проверял).

Мы хотели бы, чтобы блоки были все сразу видны, то есть идёт первым VKontakte блок с комментариями, под ним – Facebook’чный блок комментариев, и уже под ним – стандартный WP (Word Press’овский блок с комментариями).

И надписи желательно переделать на русский насколько это возможно.

За работу!

Итак, заходим в папку wp-content/plugins/vkontakte-api.

Это родная папка плагина. Откроем файл js/callback.js и сразу видим блок Comments switcher с функциями showVK(),showFB(),showWP().

По названиям функций можно судить, что именно эти функции отвечают за появление/скрытие комментариев.

Нам достаточно закомментировать внутренность этих функций (но не сами функции конечно), чтобы комментарии были все видны. Наша задача выполнена? Да, почти, но по нажатию кнопок Vkontakte, Facebook и Site ничего не происходит.

Да, можно их убрать, но лучше наверное по их нажатию делать переход на соотв. блоки комментов.

Для этого внутри фуннкции добавляем простой переход на хэш-таг с соотв. ид.

Для VKontakte #vkapi, для Facebook #fb-comments (этого ид изнчально нету, ниже написано, как его добавить), для Site #comments.

Таким образом весь модернизированный блок будет выглядеть так:

// Comments switcher
function showVK(Tshow, Thide) {
/*    if (!Tshow && Tshow != 0) Tshow = 1000;
    if (!Thide && Thide != 0) Thide = 1500;
    jQuery("#vkapi").show(Tshow);
    jQuery(".fb-comments").hide(Thide);
    jQuery("#comments").hide(Thide);
    jQuery("#respond").hide(Thide);
*/
    if(Tshow == 1) window.location.hash = 'vkapi';
 
}
function showFB(Tshow, Thide) {
/*    if (!Tshow && Tshow != 0) Tshow = 1000;
    if (!Thide && Thide != 0) Thide = 1500;
    jQuery(".fb-comments").show(Tshow);
    jQuery("#vkapi").hide(Thide);
    jQuery("#comments").hide(Thide);
    jQuery("#respond").hide(Thide);
*/
    window.location.hash = 'fb-comments';
}
function showWP(Tshow, Thide) {
/*    if (!Tshow && Tshow != 0) Tshow = 1000;
    if (!Thide && Thide != 0) Thide = 1500;
    jQuery("#comments").show(Tshow);
    jQuery("#respond").show(Tshow);
    jQuery("#vkapi").hide(Thide);
    jQuery(".fb-comments").hide(Thide);
*/
    window.location.hash = 'comments';
}

Для чего для контакта мы добавили условие if(Tshow == 1)?

Дело в том, что при заходе на страницу вызывается первый раз функция showVK() (если включен показ сначала комментов VK, а не FB). И тогда из-за исправленого скрипта происходил бы перескок сразу на комменты VK, что не есть хорошо, так как по умолчанию читатель ещё не читал статью/пост.

Если же у Вас включен первым показ комментов от Facebook, тогда это условие надо добавить в его блок. Для универсальности наверное его можно добавить сразу в оба блока.

Как говорилось выше, нет хэша #fb-comments. Чтобы его добавить, откроем файл vkapi.php в папке плагина, найдём там функцию add_fb_comments() и перед строкой class=’fb-comments’ (или после неё, не важно) добавим строку id=’fb-comments’.

Таким образом функция add_fb_comments() станет выглядеть так:

function add_fb_comments()
{
		$width = get_option('vkapi_comm_width');
		$limit = get_option('vkapi_comm_limit');
		$url = get_permalink();
		echo "
	<div style='background:white'
			 id='fb-comments'
			 class='fb-comments'
			 data-href='{$url}'
			 data-num-posts='{$limit}'
			 data-width='{$width}'
			 colorscheme='light'>
	</div>";
}

Сохранить, Upload, Refresh – вуаля, всё работает.

А руссификация этих кнопок и надписи Comments?

Языковость у этого плагина происходит так:

$text = __('Comments:', $this->plugin_domain);

Комментируем соотв. строку и добавляем под ней свою такую:

$text = 'Комментарии: &nbsp;&nbsp;';

А &nbsp;&nbsp; я уже отсебя добавил, это отсебятина какая-то.

Это мы находим в функции add_tabs_button_start().

Аналогичные действия проделаем для функций add_tabs_button_vk(), add_tabs_button_fb(), add_tabs_button_wp() и называем кнопки как хотим. Я назвал ВКонтакте, Facebook и Сайт соответственно.

Всё, конец. Всё работает? Да!

В заключение можно добавить, что при обновлении плагина все проделанные нами изменения скорее всего сойдут на нет, поэтому их придётся проделывать снова. Либо же не обновлять плагин совсем, если он и так работает нормально и удовлетворяет все наши нужды.

До свидания, друзья!