Блог для начинающих веб разработчиков. 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 в нужное место.

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

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

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

online casino games casino online slots zone online casino casino online slots | https://online-casinos.us.org/ - online gambling https://online-casinos.us.org/ - online casinos for us players

ср, 2018-08-15 23:18

foxwoods online casino casino games online casino bonus borgata online casino | https://onlinecasinoxplay.us.org/ - online casino bonus https://onlinecasinoxplay.us.org/ - real casino

ср, 2018-08-15 23:27

caesars online casino casino online slots betfair online casino casino blackjack | https://online-casinos.us.org/ - play online casino https://online-casinos.us.org/ - real casino

ср, 2018-08-15 23:50

betfair online casino real casino real casino casino online slots | https://onlinecasinoxplay.us.org/ - casino bonus https://onlinecasinoxplay.us.org/ - online casino real money

чт, 2018-08-16 00:00

casino blackjack mgm online casino best online casinos online casino real money | https://onlinecasinoxplay.us.org/ - online gambling casino https://onlinecasinoxplay.us.org/ - play online casino

чт, 2018-08-16 00:33

real money casino real casino free online casino mgm online casino | https://online-casinos.us.org/ - best online casinos https://online-casinos.us.org/ - online casino slots

чт, 2018-08-16 00:57

online casinos for us players borgata online casino best online casinos slots for real money | https://onlinecasinoxplay.us.org/ - casino online slots https://onlinecasinoxplay.us.org/ - online gambling

чт, 2018-08-16 01:03

online casino real money free online casino slots online casino real money online casino games | https://onlinecasinoxplay.us.org/ - empire city online casino https://onlinecasinoxplay.us.org/ - online casino real money

чт, 2018-08-16 02:02

casino bonus real casino casino real money free online casino | http://onlinecasinoleo.com/ - free online casino slots http://onlinecasinoleo.com/ - online casino sites

чт, 2018-08-16 02:41

casino slots online gambling casino online online casino sites | http://onlinecasinoleo.com/ - virgin online casino http://onlinecasinoleo.com/ - online casino real money

чт, 2018-08-16 03:10

online casino bonus virgin online casino virgin online casino online casino bonus | https://onlinecasinoxplay.us.org/ - foxwoods online casino https://onlinecasinoxplay.us.org/ - online casino games

чт, 2018-08-16 03:33

online casino bonus play casino casino games online gambling | https://online-casinos.us.org/ - borgata online casino https://online-casinos.us.org/ - online casinos for us players

чт, 2018-08-16 03:33

online casino sites casino bonus slots for real money online casino sites | https://onlinecasino2018.us.org/ - online gambling https://onlinecasino2018.us.org/ - casino blackjack

чт, 2018-08-16 03:44

casino online slots real casino online casino games online casino | https://onlinecasinoist.com/ - parx online casino https://onlinecasinoist.com/ - zone online casino

чт, 2018-08-16 03:45

online casino sites casino bonus online casinos online casinos for us players | https://onlinecasinoplay777.us.org/ - play online casino https://onlinecasinoplay777.us.org/ - betfair online casino

чт, 2018-08-16 04:11

casino blackjack online casinos for us players real casino online casinos for us players | https://onlinecasinoplayusa.us.org/ - mgm online casino https://onlinecasinoplayusa.us.org/ - foxwoods online casino

чт, 2018-08-16 04:11

real casino parx online casino caesars online casino betfair online casino | https://onlinecasinoist.com/ - gsn casino https://onlinecasinoist.com/ - gsn casino games

чт, 2018-08-16 04:27

casino online slots online casino gambling slots for real money zone online casino | https://onlinecasinoplay777.us.org/ - best online casinos https://onlinecasinoplay777.us.org/ - virgin online casino

чт, 2018-08-16 04:50

play online casino real casino online casino games online casino slots | https://onlinecasino2018.us.org/ - slots for real money https://onlinecasino2018.us.org/ - online casino sites

чт, 2018-08-16 04:52

tropicana online casino best online casinos parx online casino play casino | https://onlinecasinoplayusa.us.org/ - free online casino https://onlinecasinoplayusa.us.org/ - empire city online casino

чт, 2018-08-16 04:53

free online casino slots casino real money play online casino real casino | https://onlinecasinoplayusa.us.org/ - casino games https://onlinecasinoplayusa.us.org/ - zone online casino

чт, 2018-08-16 05:31

casino real money casino online online casino games casino games | https://onlinecasino2018.us.org/ - online casino https://onlinecasino2018.us.org/ - best online casinos

чт, 2018-08-16 06:01

free online casino best online casino best online casinos zone online casino | https://onlinecasinoplay777.us.org/ - online casino real money https://onlinecasinoplay777.us.org/ - play casino

чт, 2018-08-16 06:05

virgin online casino zone online casino free online casino play online casino | https://onlinecasinoplayusa.us.org/ - casino online slots https://onlinecasinoplayusa.us.org/ - online casino games

чт, 2018-08-16 06:12

casino games casino play foxwoods online casino online casino real money | https://onlinecasinoplay777.us.org/ - free online casino slots https://onlinecasinoplay777.us.org/ - free online casino slots

чт, 2018-08-16 06:42

online casinos online casinos casino bonus online gambling | https://onlinecasinoist.com/ - best online casino https://onlinecasinoist.com/ - online casino gambling

чт, 2018-08-16 07:08

real casino parx online casino casino slots casino slots | https://onlinecasinoist.com/ - foxwoods online casino https://onlinecasinoist.com/ - online casino

чт, 2018-08-16 07:45

play casino empire city online casino online casinos online gambling | https://onlinecasinoplay777.us.org/ - casino bonus https://onlinecasinoplay777.us.org/ - parx online casino

чт, 2018-08-16 07:52

casino real money online casino sites free online casino slots zone online casino | https://onlinecasinoplayusa.us.org/ - mgm online casino https://onlinecasinoplayusa.us.org/ - online casino slots

чт, 2018-08-16 08:03

casino blackjack slots for real money caesars online casino free online casino | https://onlinecasinoplay777.us.org/ - online gambling casino https://onlinecasinoplay777.us.org/ - casino bonus

чт, 2018-08-16 08:26

online casino sites zone online casino virgin online casino best online casinos | https://onlinecasinoplayusa.us.org/ - play casino https://onlinecasinoplayusa.us.org/ - real money casino

чт, 2018-08-16 08:38

online casino gambling online casinos casino online slots online casino real money | https://onlinecasino2018.us.org/ - mgm online casino https://onlinecasino2018.us.org/ - casino games

чт, 2018-08-16 08:43

casino play gsn casino foxwoods online casino best online casino | https://onlinecasinoist.com/ - casino blackjack https://onlinecasinoist.com/ - real casino

чт, 2018-08-16 08:59

parx online casino best online casinos virgin online casino online casino games | https://onlinecasinoplayusa.us.org/ - free online casino slots https://onlinecasinoplayusa.us.org/ - online casinos

чт, 2018-08-16 09:11

empire city online casino mgm online casino caesars online casino casino play | https://onlinecasinoist.com/ - online casino slots https://onlinecasinoist.com/ - slots for real money

чт, 2018-08-16 09:37

online gambling real money casino mgm online casino casino play | https://onlinecasinoplayusa.us.org/ - real money casino https://onlinecasinoplayusa.us.org/ - virgin online casino

чт, 2018-08-16 09:49

casino games online casino slots casino bonus parx online casino | https://onlinecasinoplayusa.us.org/ - virgin online casino https://onlinecasinoplayusa.us.org/ - tropicana online casino

чт, 2018-08-16 10:21

tropicana online casino casino online slots casino bonus online casino slots | https://onlinecasinoplayusa.us.org/ - free online casino slots https://onlinecasinoplayusa.us.org/ - online casino sites

чт, 2018-08-16 10:52

play online casino tropicana online casino foxwoods online casino betfair online casino | https://onlinecasinoplay777.us.org/ - zone online casino https://onlinecasinoplay777.us.org/ - best online casinos

чт, 2018-08-16 12:04

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

чт, 2018-08-16 12:28

real money casino zone online casino casino play foxwoods online casino | https://onlinecasinobestplay.us.org/ - online gambling casino https://onlinecasinobestplay.us.org/ - online casino real money

чт, 2018-08-16 12:46

mgm online casino empire city online casino betfair online casino foxwoods online casino | https://trstonlinecasino.com/ - foxwoods online casino https://trstonlinecasino.com/ - casino games

чт, 2018-08-16 12:49

casino real money gsn casino slots tropicana online casino empire city online casino | https://trstonlinecasino.com/ - play online casino https://trstonlinecasino.com/ - play casino

чт, 2018-08-16 13:06

online casino sites betfair online casino empire city online casino betfair online casino | https://trstonlinecasino.com/ - play casino https://trstonlinecasino.com/ - free online casino

чт, 2018-08-16 13:31

casino online free online casino online casino gambling casino play | https://onlinecasino888.us.org/ - mgm online casino https://onlinecasino888.us.org/ - mgm online casino

чт, 2018-08-16 13:33

casino online slots casino bonus slots for real money virgin online casino | https://trstonlinecasino.com/ - casino play https://trstonlinecasino.com/ - gsn casino

чт, 2018-08-16 13:47

virgin online casino virgin online casino borgata online casino mgm online casino | https://onlinecasinobestplay.us.org/ - online gambling https://onlinecasinobestplay.us.org/ - online gambling casino

чт, 2018-08-16 14:04

real money casino online gambling casino casino bonus tropicana online casino | https://onlinecasinobestplay.us.org/ - tropicana online casino https://onlinecasinobestplay.us.org/ - casino blackjack

чт, 2018-08-16 14:44

tropicana online casino caesars online casino online gambling casino bonus | https://trstonlinecasino.com/ - best online casino https://trstonlinecasino.com/ - casino blackjack

чт, 2018-08-16 14:45

mgm online casino online gambling virgin online casino best online casino | https://onlinecasinobestplay.us.org/ - slots for real money https://onlinecasinobestplay.us.org/ - free online casino slots

чт, 2018-08-16 15:20

Страницы

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