Примеры работы со стилями
Навигация с помощью стрелок
Эта возможность уже включена в стиль по умолчанию zeta, приведенное описание преследует методические цели.
В шаблонах S2 есть метка <!-- s2_navigation_link -->, предназначенная для вставки в секцию <head> тегов <link> со ссылками на соседние страницы. Например, на странице http://example.com/blog/2011/08/ теги могут иметь такой вид:
<link rel="up" href="/blog/2011/" />
<link rel="prev" href="/blog/2011/07/" />
<link rel="next" href="/blog/2011/09/" />
Такие ссылки не отображаются браузерами (хотя Опера использует их и активирует соответствующие кнопки на панели навигации).
С помощью тегов <link> легко назначить клавиатурные комбинации Ctrl + ←, Ctrl + → и Ctrl + ↑ на переходы между страницами. Эта идея описана технологами Студии Лебедева. Вы можете взять адаптированный вариант скрипта и добавить его в имеющийся
(function ()
{
var focusInInput = false, upLink, nextLink, prevLink, started = false;
function NavigateThrough (event)
{
if (window.event)
event = window.event;
if (!(event.ctrlKey || event.altKey) || focusInInput)
return;
var link = false;
switch (event.keyCode ? event.keyCode : event.which ? event.which : null)
{
case 0x27:
link = nextLink;
break;
case 0x25:
link = prevLink;
break;
case 0x26:
link = upLink;
break;
}
if (link)
{
document.location = link;
if (window.event)
window.event.returnValue = false;
if (event.preventDefault)
event.preventDefault();
}
}
function Init()
{
if (started || !document.getElementsByTagName || !document.getElementById)
return;
started = true;
var e, i, ae = document.getElementsByTagName('LINK');
for (i = ae.length; i-- ;)
{
e = ae[i];
if (e.rel == 'next')
nextLink = e.href;
if (e.rel == 'prev')
prevLink = e.href;
if (e.rel == 'up')
upLink = e.href;
}
if (bIE)
{
document.attachEvent('onkeydown', NavigateThrough);
ae = document.getElementsByTagName('INPUT');
for (i = ae.length; i-- ;)
{
e = ae[i];
if (e.type == 'text' || e.type == 'search')
{
e.attachEvent('onfocus', function () {focusInInput = true});
e.attachEvent('onblur', function () {focusInInput = false});
}
}
ae = document.getElementsByTagName('TEXTAREA');
for (i = ae.length; i-- ;)
{
e = ae[i];
e.attachEvent('onfocus', function () {focusInInput = true});
e.attachEvent('onblur', function () {focusInInput = false});
}
}
if (bFF)
{
document.addEventListener('keydown', NavigateThrough, true);
ae = document.getElementsByTagName('INPUT');
for (i = ae.length; i-- ;)
{
e = ae[i];
if (e.type == 'text' || e.type == 'search')
{
e.addEventListener('focus', function () {focusInInput = true}, true);
e.addEventListener('blur', function () {focusInInput = false}, true);
}
}
ae = document.getElementsByTagName('TEXTAREA');
for (i = ae.length; i-- ;)
{
e = ae[i];
e.addEventListener('focus', function () {focusInInput = true}, true);
e.addEventListener('blur', function () {focusInInput = false}, true);
}
}
}
var bFF = document.addEventListener != null;
var bIE = !bFF && document.attachEvent != null;
if (bIE)
attachEvent('onload', Init);
if (bFF)
{
document.addEventListener('DOMContentLoaded', Init, false);
addEventListener('load', Init, true);
}
})();
Кнопки социальных сетей
Я опишу процесс добавления на сайт кнопок, генерируемых сервисом share42.com. Идем туда и выбираем кнопки нескольких самых популярных социальных сетей. Указываем кодировку share42.js, добавляющий кнопки, и иконки icons.png. Их нужно добавить в ваш стиль. Я расскажу, как это делается, на примере стандартного стиля zeta.
- Сделаем новый стиль на основе zeta, чтобы не потерять изменения при обновлении движка. Копируем всё содержимое папки
_styles/zetaв_styles/my_zetaи переименовываем файл_styles/my_zeta/zeta.phpв_styles/my_zeta/my_zeta.php. - Стиль zeta не переопределяет стандартные шаблоны. Для переопределения достаточно их скопировать из
_include/templatesв_styles/my_zeta/templates. - Копируем файл
icons.pngиз архива в папку_styles/my_zeta. - Открываем файл
_styles/my_zeta/templates/site.phpв текстовом редакторе и перед меткой<!-- s2_comments -->добавляем примерно такой код:
Первую сточку с определением функции<script type="text/javascript"> function share42(f,u,t){if(!u)u=location.href;if(!t)t=document.title;u=encodeURIComponent(u);t=encodeURIComponent(t);var s=new Array('"http://www.facebook.com/sharer.php?u='+u+'&t='+t+'" title="Поделиться в Facebook"','"http://www.livejournal.com/update.bml?event='+u+'&subject='+t+'" title="Опубликовать в LiveJournal"','"http://twitter.com/share?text='+t+'&url='+u+'" title="Добавить в Twitter"','"#" onclick="window.open(\'http://vkontakte.ru/share.php?url='+u+'\', \'_blank\', \'scrollbars=0, resizable=1, menubar=0, left=200, top=200, width=554, height=421, toolbar=0, status=0\');return false" title="Поделиться В Контакте"');for(i=0;i<s.length;i++)document.write('<a rel="nofollow" style="display:inline-block;width:16px;height:16px;margin:0 7px 7px 0;background:url('+f+'icons.png) -'+16*i+'px 0" href='+s[i]+' target="_blank"></a>')} share42('/_styles/my_zeta/'); </script>share42нужно взять из файлаshare42.jsв архиве, а во второй нужно указать путь к файлуicons.pngотносительно корня сайта (выше я разместил код, который получился у меня). Не забывайте, что файл нужно сохранить в кодировкеUTF-8 без метки порядка байт (BOM). Если редактор сохранит файл в другой кодировке, сайт работать не будет. - Заходим в панель управления и изменяем стиль с zeta на my_zeta. На страницах с шаблоном
site.phpдолжны появиться социокнопки.
Вы можете добавить социокнопки в нужные места других шаблонов, например, на главную страницу. Если в вашем стиле уже есть share42 из шаблонов.
Комментарии
Рустам пишет:Ага. И с зашифрованными base64 ссылками на картинки кнопок, которые, вероятно, грузятся
— нашёл отличные социокнопки с счётчиками, красивые, аккуратные.