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

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

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

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

foxwoods online casino free online casino slots free online casino online casino bonus | https://trstonlinecasino.com/ - online casino real money https://trstonlinecasino.com/ - online casinos

вс, 2018-08-19 03:41

mgm online casino best online casino online casino gambling online gambling casino | https://onlinecasinospark.com/ - online casino bonus https://onlinecasinospark.com/ - zone online casino

вс, 2018-08-19 04:10

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

вс, 2018-08-19 04:43

slots for real money online casino online gambling casino online casino sites | https://onlinecasinospark.com/ - casino games https://onlinecasinospark.com/ - online gambling

вс, 2018-08-19 04:45

online casino free online casino slots online casino gambling online casino | https://onlinecasinospark.com/ - best online casino https://onlinecasinospark.com/ - casino slots

вс, 2018-08-19 05:56

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

вс, 2018-08-19 05:56

online casinos for us players casino real money casino real money virgin online casino | https://trstonlinecasino.com/ - virgin online casino https://trstonlinecasino.com/ - parx online casino

вс, 2018-08-19 06:44

online casino gambling online casino games casino blackjack casino online | [url=https://onlinecasinospark.com/]online gambling[/url] [url=https://onlinecasinospark.com/]real money casino[/url]

вс, 2018-08-19 07:31

online casinos borgata online casino real money casino play online casino | https://trstonlinecasino.com/ - virgin online casino https://trstonlinecasino.com/ - online casinos

вс, 2018-08-19 08:08

online casino slots caesars online casino casino real money online casino slots | https://onlinecasinoslotsmaxx.com/ - tropicana online casino https://onlinecasinoslotsmaxx.com/ - casino blackjack

вс, 2018-08-19 08:29

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

вс, 2018-08-19 08:37

casino blackjack online casino games casino slots mgm online casino | https://onlinecasinospark.com/ - casino online slots https://onlinecasinospark.com/ - casino games

вс, 2018-08-19 09:57

online casino online gambling online casino bonus casino play | https://onlinecasinoslotsmaxx.com/ - virgin online casino https://onlinecasinoslotsmaxx.com/ - casino games

вс, 2018-08-19 10:22

inspirationalwomenconnecting.com

AlvinMit
пн, 2018-08-20 06:30

viagra price generic viagra price viagra soft generic viagra without prescription

вс, 2018-09-16 20:25

low cost viagra viagra generic name cheap viagra how to get viagra without a doctor prescription

вт, 2018-09-18 17:16

viagra buy cheapest generic viagra cheapest viagra prices cheapest viagra online

вт, 2018-09-18 21:40

net payday advance, net payday advance
net payday advance, payday advance online
https://paydayadvance.icu/

ср, 2018-09-19 14:39

buy cheap viagra online generic viagra without a doctor prescription viagra natural generic viagra online

чт, 2018-09-20 16:04

buy cheap brand cialis, cialis brand vs generic
brand cialis overnight delivery - brand cialis vs generic cialis
https://brandcialis.icu/

пн, 2018-09-24 03:32

online cialis cialis online cialis coupon purchasing cialis online

сб, 2018-09-29 09:18

viagra prescription online generic viagra online pharmacy viagra generic viagra online cheap

вт, 2018-10-02 00:42

women viagra buy viagra online reviews viagra doses how to get viagra online

вс, 2018-10-07 13:25

Torsion bras de quelqu'un est comment dur votre sang pousse contre les parois de vos arteres lorsque votre coeur determination pompe le sang. Arteres sont les tubes qui transportent prendre offre sang loin de votre coeur. Chaque temps votre determination bat, il pompe le sang tout au long vos arteres a la vacances de votre corps.
https://www.cialispascherfr24.com/cialis-sans-ordonnance-pharmacie/

вс, 2018-10-07 14:11

cash loans bad credit affiliate payday loan loans poor credit advanced payday loans

пн, 2018-10-22 03:33

a quick payday loan get a payday loan personal loans no credit check 1 hour faxless payday loan

вт, 2018-10-23 17:11

online cialis generic cialis cialis 5mg generic cialis

сб, 2018-11-03 11:28

how does viagra work viagra pills natural alternative to viagra viagra generic

сб, 2018-11-24 04:42

what is tadalafil cialis generic cialis online no prescription cialis buy

вс, 2018-12-02 11:06

tadalafil cialis cialis cheap cialis sale п»їcialis

пн, 2018-12-03 14:33

Страницы

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