Блог для начинающих веб разработчиков. HTML, СSS, Jquery, Drupal и другое.

→ Добавляем кнопки социальных сетей в Drupal 7. Вариант без внешних скриптов.

Опубликовано: 24 апреля 2012

Социальные кнопки могут быть полезны для посетителей вашего сайта или блога. Нажимая на эти кнопки, они смогут сохранить ссылки на интересные материалы в своих аккаунтах в социальных сетях.

Размещение таких кнопок очень полезно. Ведь после нажатия кнопки «поделиться», ссылка с кратким описанием сайта и может даже картинкой появится на стене у того кто её нажал, а там её могут увидеть и перейти другие пользователи социальной сети. В этой статье рассмотрим три самые популярные соц. сети: Вконтакте, Twitter и Facebook.

Каждая из них предоставляет нужные кнопки для установки на сторонних сайтах.

Для «В Контакте» код можно найти здесь.

Для Твиттера – ссылка.

Для Facebook – здесь.

Однако, как видно, каждая такая кнопка подгружает свой js-файл со скриптом. Это замедляет время загрузки страницы в целом. Кроме того, используя готовый код, вебмастер никак не сможет оформить кнопки социальных сетей по своему желанию – всё оформление находится вне сайта.

К счастью, многие социальные сети позволяют использовать простые HTML гиперссылки с определёнными параметрами для публикации закладок. Используя данный метод, мы можем оформить кнопки, по своему желанию.

Ниже представлен пример создания блока из трёх социальных кнопок, по клику на которые открывается новое окно браузера (в центре экрана), где у посетителя запрашивается подтверждение на создание закладки. После публикации, окно закрывается.

Весь этот блок, мы так же интегрируем с темой Drupal 7.

Для начала небольшая справка:

1. В контакте, «поделиться» принимает адрес вида:



http://vkontakte.ru/share.php?url=http://адресСайта.ru/адресСтраницы

При этом, в качестве заголовка берётся содержание тега <title>

А так же, берётся какая-то похожая на логотип картинка. Если нам нужно указать картинку точно, то необходимо вставить в заголовок страницы (внутрь контейнера <head></head>) такой тег:



<link rel="image_src" href="адресКартинки" />

2. Социальная кнопка от твиттера - «твиттнуть» позволяет опубликовать твитт с заранее заготовленным текстом и ссылкой. URL выглядит следующим образом:



https://twitter.com/share?text="ТекстТвитта&url=http://АдресСайта.ru/адресСтраницы

При этом текст твитта должен быть url-кодирован, иначе могут быть ошибки. При нажатии на эту ссылку будет предложено создать твитт содержащий текст и ссылку.

3. Социальная закладка Facebok похожа на В контакте и выглядит так:



http://www.facebook.com/sharer.php?u=http://адресСайта.ru/страница

Итак, пусть мы хотим оформить блок кнопок как-то так:

При этом HTML - размека довольно проста. Весь HTML состоит из трёх ссылок:



<a href="#" class="soc-icon"><img src="/images/facebook.png" width="30" height="30"></a>
<a href="#" class="soc-icon”><img src="/images/twitter.png" width="30" height="30"></a>
<a href="#" class="soc-icon"><img src="/images/vk.png" width="30" height="30"></a>

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



.soc-icon{
	display:block;
	float:left;
	opacity:0.8;
	margin:2px;}
.soc-icon:hover{
	opacity:1;}

Теперь займёмся функционалом.

В Drupal 7, наши кнопки можно вставить в файл node.tpl.php вашей темы в нужное место. Этот файл указывает как будет выводится именно материал сайта.

Из этого файла мы имеем доступ к переменным $node_url и $title, которые выводят url путь до статьи (от корня сайта, без домена), и заголовок статьи соответственно. Мы можем собрать из этих переменных строки для гиперссылок наших социальных кнопок. Сохраним каждую в переменной. Ниже php-код:



<?php
$urlvk = 'http://vk.com/share.php?url=' . 'http://' . $_SERVER["HTTP_HOST"] . $node_url;
$urlfb = 'http://www.facebook.com/sharer.php?u=' . 'http://' . $_SERVER["HTTP_HOST"] .$node_url;
$urltw = 'https://twitter.com/share?text=' . urlencode($title) . '&url=http://' . $_SERVER["HTTP_HOST"] . $node_url;
?>

Здесь мы используем переменную окружения $_SERVER["HTTP_HOST"], чтобы получить имя домена нашего сайта.

URL – адреса есть, HTML разметка тоже есть. Можно просто подставить адреса в атрибут href ссылок, и всё уже будет работать:



<a href="<?=$urlvk?>" class="soc-icon"><img src="/sites/all/themes/heavenweb/images/vk.png" width="20" height="20"></a>
<a href="<?=$urltw?>" class="soc-icon"><img src="/sites/all/themes/heavenweb/images/twitter.png" width="20" height="20"></a>
<a href="<?=$urlfb?>" class="soc-icon"><img src="/sites/all/themes/heavenweb/images/facebook.png" width="20" height="20"></a>

Но есть одна проблема: нам нужно, чтобы посетитель остался на сайте, а не перешёл сайт социальной сети.

Сделаем так, чтобы по клику открывалось новое небольшое окно браузера, и туда загружалась страница, а перехода по ссылке не было.

Так как Drupal поддерживает jQuery, напишем обработчик клика по ссылке с CSS-классом «soc-icon». Нажатие вызовет функцию socialopen, которая откроет новое окно и загрузит туда адрес из атрибута «href» ссылки. Весь JavaScript код ниже:


function socialopen(url){
var winpar='width=500,height=400,left=' + ((window.innerWidth - 500)/2) + ',top=' + ((window.innerHeight - 400)/2) ;
window.open(url,'tvkw',winpar);
}
(function ($) {	
	$(document).ready(function(e) {
		$('a.soc-icon').click(function(){
		var url = $(this).attr('href');	
			socialopen(url);
		return false;
		})
	});
})(jQuery);

Функция socialopen вызывает JavaScript метод window.open(), который и открывает новое окно. В этот метод мы передаём параметры этого окна. Обратите внимание, как мы здесь высчитали положение окна (параметры left и top). Благодаря такому методу, новое окно появляется посередине экрана.

При интеграции социальных кнопок в тему Drupal 7, JavaScript код лучше поместить в js файл, и подключить его к теме (в крайнем случае можно вставить код в html.tpl.php, page.tpl.php или node.tpl.php, с помощью тега <script>). CSS код тоже удобно вставить в файл стилей с расширением css, подключённый к теме. Ну а HTML код вставляется в node.tpl.php в нужное место.

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

Скачать исходник

Поделиться:
Комментарии

best online casinos empire city online casino online gambling casino real casino | https://trstonlinecasino.com/ - free online casino slots https://trstonlinecasino.com/ - casino real money

чт, 2018-08-16 15:22

foxwoods online casino bovada casino zone online casino gsn casino slots | https://trstonlinecasino.com/ - parx online casino https://trstonlinecasino.com/ - bovada casino

чт, 2018-08-16 15:45

free online casino parx online casino online casino games online casino games | https://onlinecasinobestplay.us.org/ - online casino games https://onlinecasinobestplay.us.org/ - online casino bonus

чт, 2018-08-16 15:59

online casino online casino gambling casino real money real casino | https://onlinecasino888.us.org/ - online casino slots https://onlinecasino888.us.org/ - slots for real money

чт, 2018-08-16 16:51

parx online casino bovada casino casino games casino games | https://trstonlinecasino.com/ - caesars online casino https://trstonlinecasino.com/ - online gambling casino

чт, 2018-08-16 16:57

online casino real money online casinos free online casino online casino games | https://trstonlinecasino.com/ - casino online slots https://trstonlinecasino.com/ - online casino gambling

чт, 2018-08-16 17:33

online casino bonus casino blackjack online casino bonus online casino sites | https://onlinecasino888.us.org/ - casino blackjack https://onlinecasino888.us.org/ - online casinos

чт, 2018-08-16 17:35

parx online casino online gambling casino casino play empire city online casino | https://onlinecasinobestplay.us.org/ - online casino real money https://onlinecasinobestplay.us.org/ - real casino

чт, 2018-08-16 17:38

parx online casino online casino sites free online casino slots online casino games | https://onlinecasinobestplay.us.org/ - parx online casino https://onlinecasinobestplay.us.org/ - play online casino

чт, 2018-08-16 18:11

online casino real money parx online casino best online casino casino bonus | https://onlinecasinobestplay.us.org/ - casino online slots https://onlinecasinobestplay.us.org/ - tropicana online casino

чт, 2018-08-16 19:41

online gambling casino caesars online casino caesars online casino caesars online casino | https://trstonlinecasino.com/ - online casino games https://trstonlinecasino.com/ - foxwoods online casino

чт, 2018-08-16 20:07

online casino slots online casino gambling casino play free online casino slots | https://onlinecasinobestplay.us.org/ - online casino bonus https://onlinecasinobestplay.us.org/ - online casino games

чт, 2018-08-16 22:23

mgm online casino real casino online casino slots online casino games | https://onlinecasino888.us.org/ - casino slots https://onlinecasino888.us.org/ - slots for real money

чт, 2018-08-16 23:11

casino real money play online casino online casino online casinos | https://onlinecasino888.us.org/ - casino play https://onlinecasino888.us.org/ - casino online slots

пт, 2018-08-17 00:13

tropicana online casino best online casino zone online casino online gambling casino | https://onlinecasinokle.com/ - gsn casino games https://onlinecasinokle.com/ - online casino bonus

пт, 2018-08-17 00:35

online casino slots caesars online casino online gambling casino bonus | https://onlinecasinogamesplay.us.org/ - best online casinos https://onlinecasinogamesplay.us.org/ - mgm online casino

пт, 2018-08-17 00:54

slots for real money casino play betfair online casino play online casino | https://bestonlinecasinoddesk.com/ - caesars online casino https://bestonlinecasinoddesk.com/ - casino play

пт, 2018-08-17 00:55

online casinos mgm online casino best online casinos play online casino | https://onlinecasinokle.com/ - real casino https://onlinecasinokle.com/ - casino online

пт, 2018-08-17 01:14

best online casinos casino blackjack casino blackjack casino play | https://onlinecasinobiggs.com/ - online casino https://onlinecasinobiggs.com/ - casino online

пт, 2018-08-17 01:15

online casinos for us players online casino slots online casino sites play online casino | https://onlinecasinogamesplay.us.org/ - parx online casino https://onlinecasinogamesplay.us.org/ - online casino slots

пт, 2018-08-17 01:33

real casino online casino bonus parx online casino online gambling casino | https://bestonlinecasinoddesk.com/ - online casinos https://bestonlinecasinoddesk.com/ - online casino slots

пт, 2018-08-17 01:33

online casino online casino bonus casino blackjack free online casino | https://onlinecasinokle.com/ - casino bonus https://onlinecasinokle.com/ - casino play

пт, 2018-08-17 01:50

online casinos for us players free online casino slots zone online casino foxwoods online casino | https://bestonlinecasinoddesk.com/ - empire city online casino https://bestonlinecasinoddesk.com/ - casino bonus

пт, 2018-08-17 02:06

casino real money empire city online casino betfair online casino casino online slots | https://onlinecasinogamesplay.us.org/ - play online casino https://onlinecasinogamesplay.us.org/ - empire city online casino

пт, 2018-08-17 02:08

gsn casino games virgin online casino slots for real money online casinos for us players | https://onlinecasinokle.com/ - online casinos for us players https://onlinecasinokle.com/ - online casino

пт, 2018-08-17 02:25

betfair online casino casino blackjack foxwoods online casino casino bonus | https://onlinecasinogamesplay.us.org/ - free online casino slots https://onlinecasinogamesplay.us.org/ - empire city online casino

пт, 2018-08-17 02:53

parx online casino best online casinos casino online slots online casino gambling | https://bestonlinecasinoddesk.com/ - borgata online casino https://bestonlinecasinoddesk.com/ - real casino

пт, 2018-08-17 03:39

zone online casino borgata online casino online casino bonus parx online casino | https://onlinecasinogamesplay.us.org/ - casino online slots https://onlinecasinogamesplay.us.org/ - zone online casino

пт, 2018-08-17 04:07

virgin online casino slots for real money free online casino online casino bonus | https://bestonlinecasinoddesk.com/ - casino bonus https://bestonlinecasinoddesk.com/ - online casinos for us players

пт, 2018-08-17 04:16

borgata online casino online gambling casino bonus foxwoods online casino | https://onlinecasinogamesplay.us.org/ - casino blackjack https://onlinecasinogamesplay.us.org/ - casino games

пт, 2018-08-17 04:44

casino online slots casino online slots real casino best online casinos | https://onlinecasinogamesplay.us.org/ - parx online casino https://onlinecasinogamesplay.us.org/ - slots for real money

пт, 2018-08-17 05:18

play casino online casino bonus casino blackjack online casinos | https://onlinecasinogamesplay.us.org/ - caesars online casino https://onlinecasinogamesplay.us.org/ - casino games

пт, 2018-08-17 05:52

free online casino slots online casinos betfair online casino casino games | https://bestonlinecasinoddesk.com/ - play online casino https://bestonlinecasinoddesk.com/ - tropicana online casino

пт, 2018-08-17 05:56

online casino games casino games online casino sites free online casino slots | https://onlinecasinokle.com/ - virgin online casino https://onlinecasinokle.com/ - real money casino

пт, 2018-08-17 06:01

parx online casino casino bonus foxwoods online casino play online casino | https://bestonlinecasinoddesk.com/ - zone online casino https://bestonlinecasinoddesk.com/ - slots for real money

пт, 2018-08-17 08:01

online gambling play online casino tropicana online casino play online casino | https://onlinecasinokle.com/ - mgm online casino https://onlinecasinokle.com/ - online casino slots

пт, 2018-08-17 08:13

online gambling casino games online casino real money real money casino | https://onlinecasinobiggs.com/ - online casinos https://onlinecasinobiggs.com/ - real money casino

пт, 2018-08-17 08:15

mgm online casino free online casino slots real casino casino real money | https://onlinecasinobiggs.com/ - mgm online casino https://onlinecasinobiggs.com/ - casino slots

пт, 2018-08-17 08:50

casino play caesars online casino online casino real money best online casinos | https://bestonlinecasinoddesk.com/ - free online casino https://bestonlinecasinoddesk.com/ - casino online slots

пт, 2018-08-17 08:59

casino play online casino sites caesars online casino real money casino | https://onlinecasinogamess.us.org/ - free online casino slots https://onlinecasinogamess.us.org/ - virgin online casino

пт, 2018-08-17 12:05

real money casino casino real money slots for real money mgm online casino | https://onlinecasinodd.com/ - casino slots https://onlinecasinodd.com/ - zone online casino

пт, 2018-08-17 12:33

online casinos for us players tropicana online casino parx online casino free online casino | https://casinorealmoneyiplay24.com/ - casino blackjack https://casinorealmoneyiplay24.com/ - casino bonus

пт, 2018-08-17 12:40

slots for real money play online casino tropicana online casino casino games | https://onlinecasinogamess.us.org/ - online casino bonus https://onlinecasinogamess.us.org/ - online casino games

пт, 2018-08-17 12:46

slots for real money best online casinos online casino real money online gambling casino | https://onlinecasinokle.com/ - gsn casino games https://onlinecasinokle.com/ - best online casino

пт, 2018-08-17 12:49

casino bonus online casino games foxwoods online casino casino online slots | https://onlinecasinogamess.us.org/ - casino real money https://onlinecasinogamess.us.org/ - tropicana online casino

пт, 2018-08-17 13:27

free online casino slots online casino games slots for real money borgata online casino | https://onlinecasinogamess.us.org/ - caesars online casino https://onlinecasinogamess.us.org/ - real money casino

пт, 2018-08-17 14:07

casino bonus online gambling online casino gambling caesars online casino | https://casinorealmoneyiplay24.com/ - real money casino https://casinorealmoneyiplay24.com/ - best online casinos

пт, 2018-08-17 14:35

play casino online casino slots borgata online casino online casino slots | https://onlinecasinogamess.us.org/ - real casino https://onlinecasinogamess.us.org/ - online casino real money

пт, 2018-08-17 14:45

virgin online casino casino slots virgin online casino casino online | https://onlinecasinokle.com/ - free online casino slots https://onlinecasinokle.com/ - borgata online casino

пт, 2018-08-17 14:50

online casino gambling tropicana online casino best online casinos online casino slots | https://onlinecasinogamess.us.org/ - best online casino https://onlinecasinogamess.us.org/ - online casinos

пт, 2018-08-17 15:21

Страницы

Комментировать