К основному контенту

Социальные кнопки "Поделиться"

Сейчас очень популярно добавлять кнопки "Поделиться" (Share) на сайтах. Они дают возможность рассказать о сайте или какой-то статье сайта в социальных сетях.
Эта статья посвящена не самим кнопкам, а их программированию. Описан небольшой пример для кнопок Google+, ВКонтакте, Одноклассники, Mail.ru.

Схема

У всех социальных сетей есть возможность вставки новости для Вашего пользователя, путем вызова определенного адреса с некоторыми параметрами. В основном у всех маска адреса следующая:
http(s)://<social.network.address>/share?url=<yore site url>[&<other params>]
Конечно, адреса у всех разные, не говоря уж о параметрах, но все они принимают адрес Вашего сайта в качестве одного их параметров.

On-line сервисы

Да. и эта ниша не осталась пустой. Нашлись компании/люди, которые готовы сгенерировать готовый скрипт для такой кнопки или для нескольких кнопок. И, опять же, никто не готов делиться таким сервисом бесплатно. И это нормально, поскольку эти компании/люди затратили свое время, силы и средства на разработку подобного сервиса.
Все программисты понимают, что сгенерировать такую кнопку совсем не сложно, учитывая что количество подобных социальных сетей не так много и их можно просто перечислить в каком нибудь массиве и просто подставлять параметры.
Вот несколько сервисов, предоставляющих такую услугу:
Большинство таких сайтов не просит денег, они просто добавляют кнопку или ссылку на их сайт. Можно назвать это платой за пользование сервисом.

Не хочу!

Именно эта фраза зачастую встает перед программистом, когда что-то нужно и для этого есть подобный on-line сервис. Понятно, что одна сторонняя кнопочка на сервис, которым Вы воспользовались, не сыграет большой роли, но! Я же программист и я не хочу "засорять" свое чужими кнопками, которые рядовому пользователю вовсе не нужны. Для решения этой проблемы я покопал Интернет и нашел-таки "велосипед" - вот оно, не хитрое решение и вдохновение на этот пост!

JavaScript и все-все-все

Признаюсь, что взял скрипт из источника и слегка поправил, а именно - добавил Google+ и изменил адрес ВКонтакте на официальный.


Share = {
    vkontakte: function(purl, ptitle, pimg, text) {
        url  = 'http://vk.com/share.php?';
        url += 'url='          + encodeURIComponent(purl);
        url += '&title='       + encodeURIComponent(ptitle);
        url += '&description=' + encodeURIComponent(text);
        url += '&image='       + encodeURIComponent(pimg);
        url += '&noparse=true';
        Share.popup(url);
    },
    odnoklassniki: function(purl, text) {
        url  = 'http://www.odnoklassniki.ru/dk?st.cmd=addShare&st.s=1';
        url += '&st.comments=' + encodeURIComponent(text);
        url += '&st._surl='    + encodeURIComponent(purl);
        Share.popup(url);
    },
    facebook: function(purl, ptitle, pimg, text) {
        url  = 'http://www.facebook.com/sharer.php?s=100';
        url += '&p[title]='     + encodeURIComponent(ptitle);
        url += '&p[summary]='   + encodeURIComponent(text);
        url += '&p[url]='       + encodeURIComponent(purl);
        url += '&p[images][0]=' + encodeURIComponent(pimg);
        Share.popup(url);
    },
    twitter: function(purl, ptitle) {
        url  = 'http://twitter.com/share?';
        url += 'text='      + encodeURIComponent(ptitle);
        url += '&url='      + encodeURIComponent(purl);
        url += '&counturl=' + encodeURIComponent(purl);
        Share.popup(url);
    },
    mailru: function(purl, ptitle, pimg, text) {
        url  = 'http://connect.mail.ru/share?';
        url += 'url='          + encodeURIComponent(purl);
        url += '&title='       + encodeURIComponent(ptitle);
        url += '&description=' + encodeURIComponent(text);
        url += '&imageurl='    + encodeURIComponent(pimg);
        Share.popup(url)
    },
    googleplus: function(purl) {
        url  = 'https://plus.google.com/share?';
        url += 'url='          + encodeURIComponent(purl);
        url += '&hl='       + encodeURIComponent('ru');
        Share.popup(url)
    },
 
    popup: function(url) {
        window.open(url,'','toolbar=0,status=0,width=626,height=436');
    }
};

Пользоваться просто:

<a 
 class="social_vk" 
 title="Поделиться ВКонтакте" 
 href="javascript:" 
 onclick="Share.vkontakte('http://mysiteurl.zon/','Это мой новый сайт','http://mysiteurl.zon/images/siteimg.png','Это мой новый сайт с картинкой, и я всем делюсь')"
 >
 Поделиться на vk.com
</a>

Сами картинки кнопочек можно взять с открытых источников или нарисовать самим.

Увидимся в соцсетях!

Комментарии

Популярные сообщения из этого блога

Прямые ссылки на файлы Google диска

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

События для ведения таблиц

Как и всегда, в пылу проекта внезапно родилась Z табличка. Главный нюанс был в том, что она должна была хранить пароли для авторизации на стороннем сервере. Естественно, никто не хотел хранить пароли в открытом виде, а двустороннее шифрование SAP не умеет без сторонних пакетов и надстроек. Далее, все как обычно - придумали алгоритм, сделали табличку. Дело осталось за малым - нужно шифровать пароли, которые вводит пользователь. Делать отдельную программу нет смысла, поскольку ее функционал мало чем будет отличаться от сгенерированного. Вот здесь на помощь приходят события! С их помощью можно, наверное, все. По крайней мере, я не нашел чего-либо, что нельзя сделать с данными через события.

OOP ALV GRID с HTML шапкой

В этой статье хочу постараться подробно описать и привести пример, как можно создать ALV отчет с таблицей на весь экран и с HTML шапкой вверху. Я не буду описывать начальный этап, где пишется селекционный экран или делается выборка данных. Будем считать, что основа у нас есть и нам нужно просто вывести данные. Главной изюминкой является то, что нужно вывести ALV GRID на экран без использования каких-либо дополнительных элементов на экране. Step-By-Step Шаг 1. Создание окна Создаем самое простое окно с номером 100. На него не нужно кидать никаких контейнеров. Оно нам нужно только для модулей PAI и PBO и вывода на него ALV GRID.