Установка виджета комментариев социальных сетей
В этой записи будет рассказано как установить на сайте виджеты комментариев от социальных сетей Вконтакте, Facebook и Google+.
Также будут показаны два варианта того, как компактно разместить эти виджеты в блоке со вкладками: то есть встроенные комментарии wordpress и виджеты комментариев Вконтакте, Facebook и Google+ будут находится каждый на своей вкладке.
Виджет комментариев Вконтакте
- Переходим на страничку vk.com/dev/Comments
- В выпадающем списке “Сайт/приложение” выбираем пункт “Подключить новый сайт”
- Заполняем поля:
- Название сайта: пишем любое название
- Адрес сайта: пишем url, я вписал “https://elims.org.ua”
- Базовый домен: домен, я вписал “elims.org.ua”
- Тематика: можно не выбирать
- Жмем “Сохранить”и вводим капчу, в результате Вы увидите что-то вроде этого:
- Копируем код для вставки в файл comments.php в Вашем шаблоне в то место, где выводятся комментарии. Сам код состоит из двух частей:
- Часть с “<!– Put this script tag to the <head> of your page –>” – объявление внешнего js-скрипта:
- Вконтакте рекомендует установить между тегами <head></head>, то есть в файл header.php
- Вы можете не парится и вставить весь код в одно место: в comments.php
- Либо прислушаться к рекомендациям оптимизаторов и обьявить внешний скрипт в самом низу страницы, то есть в файле footer.php
- Часть которая идет после текста “<!– Put this div tag to the place, where the Comments block will be –>” – код вывода блока комментариев – его нужно установить именно в то место файла comments.php, где вы хотите их выводить.
- Часть с “<!– Put this script tag to the <head> of your page –>” – объявление внешнего js-скрипта:
Виджет коментариев Facebook
- Проходим по ссылке developers.facebook.com/apps
- Создаем новое приложение: жмем зеленую кнопку “+ Add a New App” в правом верхнем углу
- Среди предложенных платформ выбираем “Веб-сайт”
- В поле ввода под надписью “Quick Start for Website” пишем что-то вроде: “комментарии для моего сайта”
- Во всплывшем окне выбираем подходящую категорию для своего сайте и жмем кнопку Create App ID
- В нижнем поле “Site URL” можем указать url сайта.
- Далее переходим по ссылке developers.facebook.com/docs/plugins/comments
- В поле URL to comment on указываем url-сайта и жмем кнопку “Get Code”
- В результате должны увидеть что-то вроде этого:
- Как и с Вконтакте код состоит из двух частей: объявление внешнего js скрипта и сама форма комментирования.
- Первая часть – объявление внешнего скрипта: можете вставить в header.php, в comments.php или в самый низ страницы – в footer.php
- Вторую часть – форму комментирования прописывайте в файле шаблона, который отвечает за вывод комментариев: comments.php.
В facebook виджете есть один нюанс: с таким кодом у facebook виджета на всех страницах комментарии будут сливаться в один поток. То есть в виджете будут отображаться комментарии со всех страниц домена, а не для каждой страницы отдельно. Чтобы комментарии отображались для каждой страницы отдельно нужно во второй части кода, там где у меня
data-href="http://elims.org.ua"
вместо url главной страницы “http://elims.org.ua” писать url страницы на которой находится посетитель.
В результате для WordPress вторая часть кода будет выглядеть вот так:
<div class="fb-comments" data-href="<?php the_permalink(); ?>" data-num-posts="5"></div>
или так для любого сайта:
<div class="fb-comments" data-href="http://<?php echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?>" data-num-posts="5"></div>
Виджет комментариев Google+
С виджетом комментариев от Google+ все просто, нужно лишь прописать в файл comments.php следующий код:
<script src="https://apis.google.com/js/plusone.js"></script> <div class="g-comments" data-href="<?php the_permalink(); ?>" data-width="665" data-first_party_property="BLOGGER" data-view_type="FILTERED_POSTMOD"> </div>
Если эти три виджета добавить к себе на сайт, то это будет выглядеть вот так:
Размещение виджетов во вкладках используя jquery
Мне больше нравится вариант, если эти формы комментирования раскидать по вкладкам, чтобы это выглядело вот так:
Для этого сначала прописываем где-либо (например в header.php) вот этот javascript код:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"> </script> <script type="text/javascript"> $(function(){ $('dl.tabs dt').click(function(){ $(this).siblings().removeClass('selected').end().next('dd').andSelf().addClass('selected'); }); }); </script>
<script type="text/javascript"> $(function(){ $('dl.tabs dt').click(function(){ $(this).siblings().removeClass('selected').end().next('dd').andSelf().addClass('selected'); }); }); </script>
Если не заработает, то вместо знака доллара “$” пишем “jQuery” вот так:
<script type="text/javascript"> jQuery(function(){ jQuery('dl.tabs dt').click(function(){ jQuery(this).siblings().removeClass('selected').end().next('dd').andSelf().addClass('selected'); }); }); </script>
В файле style.css пишем этот код:
#page {width:70%;margin:10px auto;} .tabs {width:100%;overflow:hidden;font-size:0.9em;margin:2em 0;zoom:1;padding:1px;position:relative;} .tabs dt {float:left;line-height:2;height:2em;background:#e8f0f5;border:1px solid #e8f0f5;border-bottom:0;padding:0 1em;position:relative;left:35px;margin-right:1px;cursor:pointer; -webkit-border-top-left-radius:10px; -webkit-border-top-right-radius:10px; -moz-border-radius-topleft:10px; -moz-border-radius-topright:10px;} .tabs dt:hover {background-color:#bfdff4;} .tabs dt.selected {border-color:#b0d0e9;background:#fff;z-index:3;cursor:auto;} .tabs dd {background:#fff;display:none;float:right;width:100%;margin:2em 0 0 -100%;position:relative;z-index:2;} .tabs dd.selected {display:block;} .tabs .tab-content {border:1px solid #b0d0e9;padding:20px; -webkit-border-radius:20px; -moz-border-radius:20px;}
В файле comments.php пишем вот это:
<div id="comments"> <h3><font color="ff0000">Ваши комментарии к статье:</font></h3> <dl class="tabs"> <dt>Wordpress</dt> <dd> <div class="tab-content"> <?php if ( have_comments() ) : ?> <h2 class="comments-title"> <?php printf( _n( 'One thought on “%2$s”', '%1$s thoughts on “%2$s”', get_comments_number(), 'twentytwelve' ), number_format_i18n( get_comments_number() ), '<span>' . get_the_title() . '</span>' ); ?> </h2> <ol class="commentlist"> <?php wp_list_comments( array( 'callback' => 'twentytwelve_comment', 'style' => 'ol' ) ); ?> </ol><!-- .commentlist --> <?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?> <nav id="comment-nav-below" class="navigation" role="navigation"> <h1 class="assistive-text section-heading"><?php _e( 'Comment navigation', 'twentytwelve' ); ?></h1> <div class="nav-previous"><?php previous_comments_link( __( '← Older Comments', 'twentytwelve' ) ); ?></div> <div class="nav-next"><?php next_comments_link( __( 'Newer Comments →', 'twentytwelve' ) ); ?></div> </nav> <?php endif; // check for comment navigation ?> <?php if ( ! comments_open() && get_comments_number() ) : ?> <p class="nocomments"><?php _e( 'Comments are closed.' , 'twentytwelve' ); ?></p> <?php endif;?> <?php endif; // have_comments() ?> <?php comment_form(); ?> </div> </dd> <dt>ВКонтакте</dt> <dd> <div class="tab-content"> <div id="vk_comments"></div> <script type="text/javascript"> VK.Widgets.Comments("vk_comments", {limit: 10, width: "580", attach: "*"}); </script> </div> </dd> <dt class="selected">FaceBook</dt> <dd class="selected"> <div class="tab-content"> <div class="fb-comments" data-href="<?php the_permalink(); ?>" data-num-posts="2" data-width="580"></div> </div> </dd> <dt>Google+</dt> <dd> <div class="tab-content"> <script src="https://apis.google.com/js/plusone.js"></script> <div class="g-comments" data-href="<?php the_permalink(); ?>" data-width="580" data-first_party_property="BLOGGER" data-view_type="FILTERED_POSTMOD"> </div> </div> </dd> </dl> </div>
Части с определением внешних js-скриптов для Вконтакте и Facebook в вышеуказанном скрипте не присутствуют, то есть их нужно описать отдельно, например в файле header.php
По умолчанию активна вкладка с комментариями Facebook иначе, виджет Facebook не подгрузится.
Размещение виджетов во вкладках без jquery
Выглядеть будет вот так:
В этом варианте не придется использовать jquery и Facebook-виджет будет подгружаться независимо от того, какая вкладка по умолчанию активна.
Код для файла style.css:
.tabscomment {position:relative;margin:40px 0;} .tabscomment > label { display:block;float:left;font-family:Verdana;padding:5px 0; font-weight: bold;color:#5d7fa3;position:relative;text-align:center;z-index:1; background:#f5f5dc; /* Цвет фона кнопок */ border-radius:6px 6px 0 0; /* Радиус закругления кнопок */ cursor:pointer; /* Вид курсора при наведении на кнопки */ top: 2px;/* Высота подъема кнопки при наведении курсора */ width:100px; /* Длинна кнопок */ margin:0 5px 0 0; /* Отступы от кнопок */ } .tabscomment > input {position:absolute;left:-9999px;} .tabscomment > label:hover {font-family:Verdana;font-weight:bold;background:#E7E1DD;top:0;-webkit-transition: all 0.2s ease-in-out;} #tab_1:checked ~ #tab_l1, #tab_2:checked ~ #tab_l2, #tab_3:checked ~ #tab_l3, #tab_4:checked ~ #tab_l4 { font-family:Verdana;font-weight:bold;background:#5d7fa3;color:#fffffe;top:0px; } .tabs_cont { background:#f7f7f7;border-radius:0 6px 6px 6px;padding:10px 15px;position:relative;z-index:2; } .tabs_cont > div {position:absolute;left:-9999px;top:0;opacity:0;opacity .45s ease-in-out;} #tab_1:checked ~ .tabs_cont #tab_c1, #tab_2:checked ~ .tabs_cont #tab_c2, #tab_3:checked ~ .tabs_cont #tab_c3, #tab_4:checked ~ .tabs_cont #tab_c4 { position:static;left:0;opacity:1; } .comments-title {background:#577aa2;font-family:verdana;font-weight:bold;color:#fffffe;padding:5px;border-radius:10px 0 10px 0;} .fb-mod {font-face:verdana;color:#5d7fa3;font-size:8pt;} a { outline: none; color: #5d7fa3; } a:hover { color: #dae2e8; }
Код для файла comments.php: <h3><font size="5">Ваши комментарии к статье:</font></h3> <section class="tabscomment"> <input id="tab_1" type="radio" name="tab" checked="checked" /> <input id="tab_2" type="radio" name="tab" /> <input id="tab_3" type="radio" name="tab" /> <input id="tab_4" type="radio" name="tab" /> <label for="tab_1" id="tab_l1">Wp</label> <label for="tab_2" id="tab_l2">Вк</label> <label for="tab_3" id="tab_l3">Fb</label> <label for="tab_4" id="tab_l4">G+</label> <div style="clear:both"></div> <div class="tabs_cont"> <div id="tab_c1"> <div id="comments" class="comments-area"> <?php if ( have_comments() ) : ?> <h2 class="comments-title"> <?php printf( _n( 'One thought on “%2$s”', '%1$s thoughts on “%2$s”', get_comments_number(), 'twentytwelve' ), number_format_i18n( get_comments_number() ), '<span>' . get_the_title() . '</span>' ); ?> </h2> <ol class="commentlist"> <?php wp_list_comments( array( 'callback' => 'twentytwelve_comment', 'style' => 'ol' ) ); ?> </ol><!-- .commentlist --> <?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?> <nav id="comment-nav-below" class="navigation" role="navigation"> <h1 class="assistive-text section-heading"><?php _e( 'Comment navigation', 'twentytwelve' ); ?></h1> <div class="nav-previous"><?php previous_comments_link( __( '← Older Comments', 'twentytwelve' ) ); ?></div> <div class="nav-next"><?php next_comments_link( __( 'Newer Comments →', 'twentytwelve' ) ); ?></div> </nav> <?php endif; // check for comment navigation ?> <?php if ( ! comments_open() && get_comments_number() ) : ?> <p class="nocomments"><?php _e( 'Comments are closed.' , 'twentytwelve' ); ?></p> <?php endif; ?> <?php endif; // have_comments() ?> <?php comment_form(); ?> </div> </div> <div id="tab_c2"> <div id="vk_comments"></div> <script type="text/javascript"> VK.Widgets.Comments("vk_comments", {limit: 10, width: "580", attach: "*"}); </script> </div> <div id="tab_c3"> <div class="fb-comments" data-href="<?php the_permalink(); ?>" data-numposts="5" data-width="580"></div> </div> <div id="tab_c4"> <script src="https://apis.google.com/js/plusone.js"></script> <div class="g-comments" data-href="<?php the_permalink(); ?>" data-width="580" data-first_party_property="BLOGGER" data-view_type="FILTERED_POSTMOD"> </div> </div> </div> </section>
Опять таки в этом коде нет определения внешних скриптов для Вконтакте и Facebook, их нужно прописать отдельно