Блог для начинающих веб разработчиков. 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 online casino bonus casino online slots casino blackjack | https://onlinecasinodd.com/ - casino online https://onlinecasinodd.com/ - play casino

сб, 2018-08-18 14:20

online casinos play online casino online casino games casino online slots | http://onlinecasinoleo.com/ - online casinos for us players http://onlinecasinoleo.com/ - gsn casino games

сб, 2018-08-18 14:31

play casino online casino gambling online casino bonus casino bonus | https://online-casinos.us.org/ - slots for real money https://online-casinos.us.org/ - best online casinos

сб, 2018-08-18 14:55

gsn casino gsn casino games betfair online casino online casino bonus | http://onlinecasinoleo.com/ - zone online casino http://onlinecasinoleo.com/ - gsn casino games

сб, 2018-08-18 15:12

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

сб, 2018-08-18 15:34

online casinos for us players empire city online casino casino blackjack free online casino slots | https://onlinecasinoxplay.us.org/ - casino bonus https://onlinecasinoxplay.us.org/ - online casino slots

сб, 2018-08-18 15:35

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

сб, 2018-08-18 15:46

free online casino virgin online casino virgin online casino online gambling | http://onlinecasinoleo.com/ - borgata online casino http://onlinecasinoleo.com/ - play casino

сб, 2018-08-18 15:51

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

сб, 2018-08-18 16:10

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

сб, 2018-08-18 16:45

casino online online casino slots casino play casino play | http://onlinecasinoleo.com/ - betfair online casino http://onlinecasinoleo.com/ - empire city online casino

сб, 2018-08-18 17:04

play casino play online casino best online casino real casino | https://onlinecasinoxplay.us.org/ - online casino slots https://onlinecasinoxplay.us.org/ - online casino real money

сб, 2018-08-18 17:22

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

сб, 2018-08-18 17:58

online casino online casino games mgm online casino play casino | https://onlinecasinodd.com/ - casino online slots https://onlinecasinodd.com/ - online casino games

сб, 2018-08-18 18:48

online casinos caesars online casino online gambling casino parx online casino | https://online-casinos.us.org/ - foxwoods online casino https://online-casinos.us.org/ - online casinos for us players

сб, 2018-08-18 19:03

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

сб, 2018-08-18 19:44

best online casino online casino slots for real money real money casino | https://onlinecasinoflow.com/ - real casino https://onlinecasinoflow.com/ - casino real money

сб, 2018-08-18 19:45

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

сб, 2018-08-18 20:04

real casino foxwoods online casino casino online slots casino bonus | https://onlinecasinoplayusa.us.org/ - parx online casino https://onlinecasinoplayusa.us.org/ - casino online slots

сб, 2018-08-18 20:06

casino blackjack real casino best online casino online casino sites | https://onlinecasinoflow.com/ - online casino https://onlinecasinoflow.com/ - best online casinos

сб, 2018-08-18 20:28

casino slots casino slots gsn casino games casino bonus | https://onlinecasinoist.com/ - betfair online casino https://onlinecasinoist.com/ - betfair online casino

сб, 2018-08-18 20:28

online gambling online casino real money real casino zone online casino | https://onlinecasinoplay777.us.org/ - casino bonus https://onlinecasinoplay777.us.org/ - caesars online casino

сб, 2018-08-18 20:49

online gambling casino online casino bonus free online casino free online casino slots | https://onlinecasinoplayusa.us.org/ - online casino real money https://onlinecasinoplayusa.us.org/ - casino bonus

сб, 2018-08-18 20:49

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

сб, 2018-08-18 21:30

online casino sites mgm online casino caesars online casino betfair online casino | https://onlinecasinoplayusa.us.org/ - best online casino https://onlinecasinoplayusa.us.org/ - online casino bonus

сб, 2018-08-18 21:34

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

сб, 2018-08-18 22:10

slots for real money online casino bonus mgm online casino online casino real money | https://onlinecasinoflow.com/ - slots for real money https://onlinecasinoflow.com/ - online casino gambling

сб, 2018-08-18 22:14

casino online slots parx online casino online casinos for us players free online casino | https://onlinecasinoplayusa.us.org/ - play casino https://onlinecasinoplayusa.us.org/ - betfair online casino

сб, 2018-08-18 22:17

zone online casino best online casinos tropicana online casino casino online slots | https://onlinecasinoist.com/ - casino online https://onlinecasinoist.com/ - casino online

сб, 2018-08-18 22:42

online casino gambling foxwoods online casino free online casino slots best online casino | https://onlinecasinoplay777.us.org/ - best online casino https://onlinecasinoplay777.us.org/ - casino online slots

сб, 2018-08-18 22:47

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

сб, 2018-08-18 22:53

casino online slots best online casino casino blackjack casino real money | https://onlinecasinoflow.com/ - best online casinos https://onlinecasinoflow.com/ - online casino

сб, 2018-08-18 22:55

gsn casino casino games online casino casino slots | https://onlinecasinoist.com/ - online casino real money https://onlinecasinoist.com/ - virgin online casino

сб, 2018-08-18 23:18

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

сб, 2018-08-18 23:56

casino online slots online casino sites real casino play online casino | https://onlinecasinoist.com/ - gsn casino games https://onlinecasinoist.com/ - online casinos for us players

сб, 2018-08-18 23:57

online casino games casino bonus betfair online casino best online casinos | https://onlinecasinoslotsmaxx.com/ - casino slots https://onlinecasinoslotsmaxx.com/ - empire city online casino

вс, 2018-08-19 00:29

online casino slots for real money casino slots play online casino | https://onlinecasinospark.com/ - play online casino https://onlinecasinospark.com/ - best online casino

вс, 2018-08-19 00:42

online casino real money online casinos mgm online casino casino real money | https://trstonlinecasino.com/ - online gambling https://trstonlinecasino.com/ - tropicana online casino

вс, 2018-08-19 00:45

gsn casino games casino real money casino bonus casino blackjack | https://onlinecasinoslotsmaxx.com/ - online gambling casino https://onlinecasinoslotsmaxx.com/ - bovada casino

вс, 2018-08-19 01:09

casino online slots casino games casino blackjack casino play | https://trstonlinecasino.com/ - best online casino https://trstonlinecasino.com/ - free online casino slots

вс, 2018-08-19 01:21

free online casino best online casinos foxwoods online casino online casino real money | https://onlinecasinobestplay.us.org/ - empire city online casino https://onlinecasinobestplay.us.org/ - free online casino

вс, 2018-08-19 01:47

gsn casino empire city online casino parx online casino gsn casino | https://onlinecasinoslotsmaxx.com/ - online casino games https://onlinecasinoslotsmaxx.com/ - foxwoods online casino

вс, 2018-08-19 01:50

online casino real money zone online casino real money casino real money casino | https://trstonlinecasino.com/ - casino real money https://trstonlinecasino.com/ - caesars online casino

вс, 2018-08-19 01:57

online gambling casino blackjack online casino games best online casinos | https://onlinecasinospark.com/ - online gambling https://onlinecasinospark.com/ - online gambling

вс, 2018-08-19 02:18

casino online slots casino games casino online slots parx online casino | https://trstonlinecasino.com/ - casino play https://trstonlinecasino.com/ - casino blackjack

вс, 2018-08-19 02:35

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

вс, 2018-08-19 02:38

zone online casino real casino online casino gambling casino real money | https://onlinecasinospark.com/ - zone online casino https://onlinecasinospark.com/ - casino online slots

вс, 2018-08-19 02:58

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

вс, 2018-08-19 03:02

virgin online casino free online casino empire city online casino casino blackjack | https://trstonlinecasino.com/ - caesars online casino https://trstonlinecasino.com/ - betfair online casino

вс, 2018-08-19 03:08

casino play play casino online casino sites mgm online casino | https://onlinecasinospark.com/ - zone online casino https://onlinecasinospark.com/ - online gambling casino

вс, 2018-08-19 03:34

Страницы

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