14.04.13, 14:18
0 комментарий
  DLE Хаки

Подключаем социальные закладки от share42.com в shortstory.tpl DLE

Сегодня я расскажу как легко и непринуждённо, без правок php и плясок с бубнами, добавить кнопки социальных сервисов от share42.com в короткие новости DLE.
Статья будет интересна прежде всего новичкам, поэтому я постарался расписать всё немного подробнее, чем это необходимо.

Главное условие - прямые руки

Идём на share42.com и генерируем там скрипт с удобными для себя параметрами.
Я выбрал G+, Twitter, OK, FB, ЖЖ и ВК. Думаю для примера этого вполне достаточно.

Подключаем социальные закладки от share42.com в shortstory.tpl DLE


Важные опции

Тип панели с иконками: "Горизонтальная"
К вашему сайту подключен jQuery: "Да" (т.к. DLE есть ужа давно библиотека jQuery)


Нужно сделать полученный скрипт читабельным. Для этого идём на jsbeautifier.org, вставляем содержимое файла share42.js в большое текстовое поле и жмём единственную кнопку.

Подключаем социальные закладки от share42.com в shortstory.tpl DLE


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

Подключаем социальные закладки от share42.com в shortstory.tpl DLE


Это будет наш основной код.

Для примера я возьму стандартный шаблон DLE - Gemini (Default уже приелся )
Скрипт можно вставлять куда угодно и как угодно, главное правильно.

1. Поэтому, чтобы защитить неподготовленный мозг от нелепых ошибок, лучше создадим файл social.js и положим его в папку js шаблона.
В файле пишем:
$(document).ready(function(){
//в это место вставляем наш основной код, скопированный ранее
});


2. Кладём картинку из архива (который скачали с share42.com) в папку images.

3. Подключаем скрипт в шаблон. Для этого откроем main.tpl и после
<script type="text/javascript" src="{THEME}/js/libs.js"></script>


прописываем
<script type="text/javascript" src="{THEME}/js/social.js"></script>


4. С простым разобрались, теперь немного посложнее (для неподготовленного мозга - очень сложно).

После "обрезания" скрипта нам более не нужна отдельная его инициализация, но для корректной работы скрипта ему нужен id блока, в который он будет вставлять кнопки соцсервисов и получать необходимые данные (заголовок и ссылку на новость), мы можем использовать стандартный тег {news-id} для присвоения уникальных идентификаторов для каждого блока. Поэтому блок в файе shortstory.tpl, куда будут вставляться кнопки будет выглядеть примерно так:
<div id="sh{news-id}" class="share42init" data-url="{full-link}" data-title="{title}"></div>


где id="sh{news-id}" может быть в принципе любым, главное наличие тега {news-id} и какого-либо текста рядом с ним (чтобы не дублировать id новостей).
Стоит отметить, что data-url и data-title - это HTML5-атрибуты и валидацию на старых доктайпах они не пройдут (хотя когда DLE проходил валидацию...)

5. Ну а наш скрипт теперь нуждается в несложной доработке, а именно: нужно дать понять скрипту в какой блок какие ссылки-кнопки вставлять.

Для этого:

Перед (или после или на строчку ниже, разницы нет)
u = $(this).attr('data-url');


Вставить
shareId = $(this).attr('id');


Далее найти
$(this).html('<span id="share42">' + l + '</span>');


и заменить на
$(this).html('<span id="share42_'+shareId+'">'+l+'</span>');


Это нехитрое телодвижение научит скрипт "различать блоки друг от друга".

6. Внимательный человек сразу увидит, что вместе с "обрезанием" скрипт утратил переменную f (она отвечала за путь к картинке), поэтому мы ещё немного причешем скрипт, заодно избавимся от не уместных в нашем случаи инлайн-стилей (не люблю я их).

Для этого просто заменим длинную строку:
for (j = 0; j < s.length; j++) l += '<a rel="nofollow" style="display:inline-block;vertical-align:bottom;width:24px;height:24px;margin:0 6px 6px 0;outline:none;background:url(' + f + 'icons.png) -' + 24 * j + 'px 0" href=' + s[j] + ' target="_blank"></a>';


на более изящную и короткую:
for (j = 0; j < s.length; j++) l += '<a rel="nofollow" class="sharelink" style="background-position: -' + 24 * j + 'px 0" href=' + s[j] + ' target="_blank"></a>';



Внимание!
не забудьте поменять размер иконок на свой (в данном случаи это циферка 24).

7. Осталось только добавить воды стилей.
Открываем любой css файл (например styles.css) и в любом месте пишем:
.sharelink {
	display: inline-block;
	vertical-align: bottom;
	width: 24px;
	height: 24px;
	margin: 0 6px 6px 0;
	outline: none;
	background-image:url(../images/icons.png); 
	}


Естественно не забываем указать нужный размер иконок.




Вот и всё!

P.S. Проверено на DLE 9.6 (но версия тут не играет роли)

Автор: ПафНутиЙ

Реклама

Напишите своё мнение

  • acuteaggressiveair_kissangel
    badbbbeachbeee
    biggrinbig_bossblumblush
    boastbombboredombye
    clappingcraycrazycurtsey
    dancedashdeclarediablo
    diroldon-t_mentiondownloaddrinks
    first_moveflirtfocusfool
    friendsgive_heartgive_rosegood
    hangheartheathelp
    hihunterhystericireful
    kingkisslaughlazy
    lolmail1mambaman_in_love
    mdamega_shokmoilmosking
    musicneanegativenew_russian
    okon_the_quietpardonparting
    partypilotpioneerpleasantry
    popcormpranksterprevedpunish
    roflrtfmrussiansad
    sarcasticscarescratchsearch
    secretsensoredshokshout
    slowsmilesmokesoldier
    soldier_girlsorryspitefulspruce_up
    stinkersuicidesunsuperstition
    swoonteasetenderthanks
    thisto_pick_ones_noseto_take_umbragetreaten
    umnikunknwvampirevava
    victorywackowhistlewink
    wizardyahooyesyu
    e101e102e103e104
    e105e106e107e108
    e109e110e111e112
    e113e114e115e116
    e117e118e119e120
    e121e122e123e124
    e125e126e127e128
    e129e130e131e132
    e133e134e135e136
    e137e138e139e140
    e141e142e143e144
    e145e146e147e148
    e149e150e151e152
    e153e154e155e156
    e157e158e159e160
    e161e162e163e164
    e165e166e167e168
    e169e170e171e172
    e173e174e175e176
    e177e178e179e180
    e181e182e183e184
    e185e186e187e188
    e189e190e191e192
    e193e194e195e196
    e197e198e199e200
    e201e202e203e204