Блок «Поделиться» для вашего форума

Автор Bugo, 04 декабря 2010, 03:41:43

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Bugo

ЦитироватьБлок «Поделиться» позволяет вашим посетителям размещать ссылку на страницу вашего сайта в социальных сетях или блогах.

Установка:

1) В script.js вставляем текст:
function yandexShare()
{
new Ya.share({
'element': 'ya_share1',
'elementStyle': {
'type': 'button',
'linkIcon': true,
'border': false,
'quickServices': ['yaru', 'vkontakte', 'facebook', 'twitter', 'odnoklassniki', 'friendfeed', 'moimir', 'lj']
},
'popupStyle': {
'copyPasteField': true
}
});
}


2) В Display.template.php находим:
для SMF 2.x:
', $txt['topic'], ': ', $context['subject'], '  (', $txt['read'], ' ', $context['num_views'], ' ', $txt['times'], ')
под этой строчкой вставляем:
<span id="ya_share1" class="floatright"></span>
для SMF 1.x, находим:
', $txt[118], ': ', $context['subject'], ' &nbsp;(', $txt[641], ' ', $context['num_views'], ' ', $txt[642], ')
вставляем ниже:
<span id="ya_share1" style="float: right"></span>

3) В Display.php находим строчку:
// Not only does a prefetch make things slower
вставляем ПЕРЕД ней (то есть выше):
$context['html_headers'] .= '
<script type="text/javascript" src="//yandex.st/share/share.js" charset="' . $context['character_set'] . '"></script>
<script type="text/javascript">yandexShare();</script>';


Заходим в любую тему и наблюдаем результат (см. вложение).

Убрать/добавить нужные сервисы можно на странице конструктора Яндекс.

P. S. В соцсеть будет отправляться не ссылка на тему, а текущая ссылка. Таким образом, можно легко добавлять ссылки на нужные сообщения.

Солярис

Весьма полезная вещь!

А как быть, если уже установлен мод для добавления ссылки на темы в соц. сеть "В контакте"?

Bugo

Пойти и утопиться :) Или удалить мод :) Или оставить — он же вроде как ничем не мешает?

Babayka

Почему-то не всегда отображаются кнопки, точнее не во всех темах, причем именно в некоторых. Кэш форумов и браузеров чистил. Браузерами смотрел разными. Не пойму от чего зависит. В большинстве тем работает отлично.

Babayka

Забыл добавить: на одном форуме тема дефолтная, на другом сторонняя. Выглядит вот так:

Bugo

Цитата: Babayka от 08 декабря 2010, 12:22:02
Почему-то не всегда отображаются кнопки, точнее не во всех темах
Речь о темах оформления или о темах с сообщениями? Приведите какую-нибудь ссылку для примера.

Babayka

Цитата: Bugo от 08 декабря 2010, 12:37:23
Речь о темах оформления или о темах с сообщениями? Приведите какую-нибудь ссылку для примера.
О темах с сообщениями не зависимо от темы оформления.

Ссылки:

http://www.komp-nora.ru/index.php?topic=24.0

http://1trans.net/board/index.php?topic=18.0

Bugo

По указанным ссылкам всё нормально отображается. Проведите опрос на своих форумах, кто видит кнопки, а кто нет :)

Babayka

Хм... Окей, отпишусь после выяснения.

Dr_Zhalnin

SsangYong Club Украина http://ssangyong-club.org<br />SsangYong club Ukrainian

Babayka

Цитата: Bugo от 08 декабря 2010, 12:43:58
По указанным ссылкам всё нормально отображается. Проведите опрос на своих форумах, кто видит кнопки, а кто нет :)
Провёл, у всех все прекрасно отображается, как и у меня на других компах. Спасибо. O0

saks

Есть вопрос - а как можно сделать, чтобы этот набор кнопок выводился как вверху страницы, так и внизу ?

Bugo


saks


Bugo


saks

не. не сделали, эт я просто нарисовал куда ее надо поставить :) но дело в том что пытаясь вставить еще раз код  <span id="ya_share1" style="float: right"></span>  , ничего не всатвляется :(

Bugo

Тогда уж используйте span с другим ID, к примеру:

<span id="ya_share2" style="float: right"></span>

Вставить эту строчку можно, к примеру, после блока:

// Show the page index... "Pages: [1]".
echo '
<div class="pagesection">
', template_button_strip($normal_buttons, 'right'), '
<div class="pagelinks floatleft">', $txt['pages'], ': ', $context['page_index'], !empty($modSettings['topbottomEnable']) ? $context['menu_separator'] . ' &nbsp;&nbsp;<a href="#top"><strong>' . $txt['go_up'] . '</strong></a>' : '', '</div>
<div class="nextlinks_bottom">', $context['previous_next'], '</div>
</div>


А в script.js потребуется вставка ещё одной функции, для объекта с новым ID:

function yandexShare2()
{
   new Ya.share({
      'element': 'ya_share2',
      'elementStyle': {
         'type': 'button',
         'linkIcon': true,
         'border': false,
         'quickServices': ['yaru', 'vkontakte', 'facebook', 'twitter', 'odnoklassniki', 'friendfeed', 'moimir', 'lj']
      },
      'popupStyle': {
         'copyPasteField': true
      }
   });
}


В Display.php потребуется изменить строчку:
<script type="text/javascript">yandexShare();</script>';
на:
<script type="text/javascript">yandexShare();yandexShare2();</script>';

Либо можно просто воспользоваться моим модом Social Media Icons — он как раз выводит иконки для добавления ссылок на темы в соцсети, и как раз в нижней части страниц :)

saks

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

saks

Цитата: Bugo от 17 декабря 2010, 13:53:03
Либо можно просто воспользоваться моим модом Social Media Icons — он как раз выводит иконки для добавления ссылок на темы в соцсети, и как раз в нижней части страниц :)
Да, мод хороший, но он выводит только одну полоску и значки достаточно крупные, хотелось бы помельче

Bugo


saks

Цитата: Bugo от 20 декабря 2010, 13:38:46
Уменьшите.
А можно ли сделать, чтобы кнопки выводились и сверху , вначале страницы, и снизу ? или это решается примерно таким же образом, как описанный выше способ вставки блока от яндекса?

Bugo

Чисто логически — кто будет добавлять тему в соцсеть, не прочитав текст темы? А вот когда прочитает, то как раз в конце, внизу, ссылочки очень пригодятся :)
Ну а ответ на вопрос: да, можно, подправив код. Но для меня интереса не представляет.

saks

Цитата: Bugo от 20 декабря 2010, 18:54:53
Чисто логически — кто будет добавлять тему в соцсеть, не прочитав текст темы? А вот когда прочитает, то как раз в конце, внизу, ссылочки очень пригодятся :)
Ну а ответ на вопрос: да, можно, подправив код. Но для меня интереса не представляет.
ну бывают же многостраничные темы, и прочитав первую страницу и перейдя на вторую кто то может и захочет поделиться, плюс место свободное как раз под кнопочки есть, чтоб не раздвигать тему основную. Спасибо за ответ, буду смотреть.

gerser

#23
Ничего не вышло. Во первых, Display.template.php в моем теме нет почему-то. scripts.js лежит тоже в дефолтовой теме только.

Повбивал я все в дефолтовую тему, ибо в моей такого нет. И ничего не произошло, хотя это очевидно в принципе.

Кнопки появились в дефолтовой теме.

Что не так делаю?

Да, кстати, в хроме почему-то они не отображаются. В опере и мозиле есть.

SpiritL

Bugo, спасибо, работает! Только вот если название темы длинное, кнопка съезжает вниз, и само название иногда совсем не отображается.

Bugo

Цитата: gerser от 30 декабря 2010, 23:42:28
Что не так делаю?
Редактировать нужно script.js в дефолтной теме, Display.php в папке Sources, Display.template.php в используемой теме оформления (если он там есть) и Display.template.php в дефолтной теме. Перечитайте инструкцию ещё раз.
Цитата: SpiritL от 03 января 2011, 16:01:31
Bugo, спасибо, работает! Только вот если название темы длинное, кнопка съезжает вниз, и само название иногда совсем не отображается.
Попробуйте переместить блок в какое-нибудь другое место. К примеру, в HTML-блок используемого портала.

SpiritL

Bugo, спасибо. Как только смогу сделать блок без заголовка обязательно :)

Солярис

#27
Вместо слова "поделиться" почему-то отображается абракадабра? Это с чем может быть связано?
Кроме того, при наведении на все кнопки с русскоязычными подсказками также отображается абракадабра место русского текста.

Кухарь

наверное character_set неправильный передается.

$context['html_headers'] .= '
        <script type="text/javascript" src="//yandex.st/share/share.js" charset="' . $context['character_set'] . '"></script>
        <script type="text/javascript">yandexShare();</script>';

Солярис

kpm, спасибо за ответ. Но когда я вставляю скрипт вот отсюда, то все отображается нормально: http://api.yandex.ru/share/

Кстати, вопрос на засыпку. Чем отличается вставка блока "поделиться" способом, описанным в данном теме (с правкой нескольких файлов) и вставка сразу готового скрипта, предлагаемого на странице яндекса:
<script type="text/javascript" src="//yandex.st/share/share.js" charset="utf-8"></script>
<div class="yashare-auto-init" data-yashareType="button" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,friendfeed,lj"></div>


Что практичнее и лучше?!

Bugo

Код, который предлагается сейчас, уже отличается от предлагаемого ранее, когда я создавал тему. Сейчас достаточно делать вставку всего кода в нужное место Display.template.php. C добавлением класса "floatright" для выравнивания по правому краю:

<script type="text/javascript" src="//yandex.st/share/share.js" charset="utf-8"></script>
<div class="yashare-auto-init floatright" data-yashareType="button" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir"></div>

Солярис


Кухарь

Ну и как результат у кого, приходить начали с сетей люди после установки?

Солярис

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

Xansen

Спасибо. вставил только в display.template - всё заработало!

wulk

Цитата: kpm от 04 февраля 2011, 23:50:31
Ну и как результат у кого, приходить начали с сетей люди после установки?
и правда, трафик есть входящий или просто фишка ради фишки? у кого какие результаты?

Кухарь

Цитата: wulk от 02 апреля 2011, 12:00:21
и правда, трафик есть входящий или просто фишка ради фишки? у кого какие результаты?
Пару тройку переходов за сутки с 1кк посетителей  ;D

viktor2

Цитата: Bugo от 04 февраля 2011, 22:15:07
Код, который предлагается сейчас, уже отличается от предлагаемого ранее, когда я создавал тему. Сейчас достаточно делать вставку всего кода в нужное место Display.template.php. C добавлением класса "floatright" для выравнивания по правому краю:

<script type="text/javascript" src="//yandex.st/share/share.js" charset="utf-8"></script>
<div class="yashare-auto-init floatright" data-yashareType="button" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir"></div>

На сколько я понял путь к файлу Display.template.php. должен быть следующим: папка Themes ---> папка default --->  и в ней искомый файл.
Но в той же папке Themes есть ещё одна папка core, где тоже есть файл Display.template.php

версия форума SMF 2.0 RS 4. тема Curve

Подскажите, в какой из этих папок в файле нужно вставить код?
И в какой участок кода в файле. Где это нужное место ? wallbash

GeorG

Смотря какую тему вы используете, если тему по-умолчанию только, то можно ограничится вставкой в файл, который находится в папке - default
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

viktor2

понял, а что всё таки имеется в виду вставить код "в нужное место"?
Это по видимому играет какую то ключевую роль, где будут расположены кнопки?

Serifa

Запихнула куда надо, форум даже не заругался, как ни странно. Но почему-то попало не в "нужное место", а куда-то на шапку, отчего меню сдвинулось и еще в теме шрифт вдруг стал крупнее, чем был. Попробую сдвинуть куда-то еще.
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!

viktor2

Да ведь тоже экспериментами сейчас занимаюсь. В нужное место..
видел где то, что в поле рядом с аватаркой. Но подходяще бы -  справа от название темы, когда она открыта.
Пока тоже не нахожу варианта.

Serifa

#42
В принципе, баннеры туда тоже можно запихнуть попутно. Мне как раз один такой надо, с одного топа. И вообще... пытаюсь закинуть всю конструкцию повыше - вылезает в самых неожиданных местах. Пытаюсь под форму ответа - глючит ответ. Где там золотая середина?)) Короче, вставила под кнопки "Переместить тему" и т.п., но без баннера - как-то не придумала, как баннер к ним красиво пристроить.
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!

viktor2

так конечно откопал вот этот мод
http://dragomano.ru/page/social-media-icons

но он чего то прописывается в самом низу темы (страницы).
Кстати, кнопки на закладки в Яндекс в этом моде нет.

Serifa



echo '
<script type="text/javascript" src="//yandex.st/share/share.js" charset="utf-8"></script>
<div class="yashare-auto-init floatright" data-yashareType="button" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir"><>';



После вот этого:


// Restore topic. eh?  No monkey business.
if ($context['can_restore_topic'])
$mod_buttons[] = array('text' => 'restore_topic', 'image' => '', 'lang' => true, 'url' => $scripturl . '?action=restoretopic;topics=' . $context['current_topic'] . ';' . $context['session_var'] . '=' . $context['session_id']);


echo '
<div id="moderationbuttons">', template_button_strip($mod_buttons, 'bottom', array('id' => 'moderationbuttons_strip')), '<>';



Прошел день - полет нормальный, нигде вроде не глючит.
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!

mastdaeff

Напишите, пожалуйста, про это нужное место. Не получилось самому найти

viktor2

Цитата: mastdaeff от 09 июня 2011, 21:41:42
Напишите, пожалуйста, про это нужное место. Не получилось самому найти
после 193 строки, если пользоваться любым редактором, поддерживающим синтаксис.

millioner85

В контакте только комментарий, ссылки нет. В чем может быть проблема?

david.xard

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

Bugo

Заходите по ссылке на страницу конструктора (ссылка в первом сообщении), убираете галки со всех сервисов — остается только кнопка. Копируете сгенерированный там код и далее по инструкции:

1) В Display.php находим строчку:

// Not only does a prefetch make things slower

вставляем ПЕРЕД ней (то есть выше):

$context['html_headers'] .= '
<script type="text/javascript" src="//yandex.st/share/share.js" charset="' . $context['character_set'] . '"></script>


2) В файле Display.template.php находим блок:

echo '
', $txt['logged'];

echo '
</div>';

и заменяем на:

echo '
', $txt['logged'];

echo '
<div class="yashare-auto-init lefttext" data-yashareL10n="ru" data-yashareType="button" data-yashareQuickServices=""></div></div>';

Всё, под каждым сообщением появляется только кнопка «Поделиться».

P. S. Пример выше приведен для темы по умолчанию (Curve, SMF 2.0).