Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

30 Сентябрь, 2020, 06:09:39
 

 Модификация блока "поделиться" от яндекса для форумов smf 2.0

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

Оффлайн Iaroslav

  • Имперская
    администрация
  • Форумный гуру
  • ****
  • Сообщений: 2493
  • Репутация. +50/-0
    • Просмотр профиля
Используется на этом форуме. Мало ли кому пригодится...
Собственно правок не особо много. В Display.template.php
1. В самом начале подгружаем скриптик собственно яндекса (так как у меня поделиться можно только сообщениями в темах и грузить скрипт во все остальные части форума я особого смысла не вижу) и скриптик который будет динамично скармливать вышезаявленному скрипту яндекса содержимое сообщений.
Вместо
function template_main()
{
global $context, $settings, $options, $txt, $scripturl, $modSettings;
// Let them know, if their report was a success!
Пишем
function template_main()
{
global $context, $settings, $options, $txt, $scripturl, $modSettings;
//Our scripts for topic only
echo '<script type="text/javascript" src="//yandex.st/share/share.js" charset="utf-8"></script>
       <script type="text/javascript">
       function share(element_share)
      {
      var share_text = $('#msg_' element_share).html();
      if (share_text.length >= 500) {
        share_text = jQuery.trim(share_text).substring(0, 500) .trim(share_text)   "...";
      };
      new Ya.share({element:'ya_share_' element_share,description:share_text,elementStyle:{'type':'none','quickServices': ["yaru","vkontakte","facebook","twitter","odnoklassniki","moimir","lj","friendfeed","moikrug","gplus","pinterest","surfingbird"]},});
     }
</script>';

// Let them know, if their report was a success!
2. И перед дополнительными полями подписи делаем блок для парковки собственно яндексовой панельки, плюс запускаем вышеозначенный скриптик.
Вместо
// Are there any custom profile fields for above the signature?
if (!empty($message['member']['custom_fields']))
{
Пишем
//YaShare
echo '<script type="text/javascript">
share('.$message['id'].');
</script>
<div id="ya_share_'.$message['id'].'"></div>';

// Are there any custom profile fields for above the signature?
if (!empty($message['member']['custom_fields']))
{
3. Куда-нибудь подключаем jquery (в принципе можно переписать вышеозначенный код и без использования jquery... но лично мне оно не особо надо, так как jquery нужен для работы ещё нескольких используемых мной дополнений).
Собственно всё.
P.S. Плюс, в отличие от решения, предложенного яндексом по умолчанию, данный вариант полностью валиден.
P.P.S. Исходно выкладывалось вот здесь, перенесено дабы не потерялось (всё-таки там тема достаточно активна, уползёт куда-нибудь... а решение может и пригодится).

 

Краткая информация об империи