Облако тегов: определение, назначение, создание (часть2)
Во второй части темы недели об облаке тегов рассмотрим установку данного элемента в вашем блоге. Точнее приведение элемента к классическом виду облака тегов вместо обычного списка, как это делает Blogger по умолчанию.
Внимание! Перед внесением любых изменений настоятельно рекомендуется сделать копию вашего шаблона блога и сохранить в файле на локальном компьютере.
После этого можно со спокойной совестью приступить к модифицированию базового кода. Для начала заходим в блог раздел «Шаблон», выбираем меню «Элементы страницы». И создаем новый элемент типа «Ярлыки». Хотя, в принципе, это можно сделать и после модификации облака тегов.
Далее заходим пункт меню «Изменить HTML». Метку в верхнем правом углу «расширить шаблоны виджета» отставляем неизменной – это несколько упростит работу:) Итак, теперь приступим непосредственно к правке кода, которая состоит из трех частей.
1. Первую часть кода необходимо добавить в секцию стилей, которая отмечена тегами
/* Label Cloud Styles ----------------------------------------------- */ #labelCloud {text-align:center;font-family:arial,sans-serif;} #labelCloud .label-cloud li{display:inline;background-image:none !important;padding:0 5px;margin:0;vertical-align:baseline !important;border:0 !important;} #labelCloud ul{list-style-type:none;margin:0 auto;padding:0;} #labelCloud a img{border:0;display:inline;margin:0 0 0 3px;padding:0} #labelCloud a{text-decoration:none} #labelCloud a:hover{text-decoration:underline} #labelCloud li a{} #labelCloud .label-cloud {} #labelCloud .label-count {padding-left:0.2em;font-size:9px;color:#000} #labelCloud .label-cloud li:before{content:"" !important} |
2. Следующая часть кода — есть настройка некоторых параметров облака, она также идет в блоке шаблона, но уже вне секции стилей, то есть снова находим в шаблоне ]]>, но вставляем код ПОСЛЕ этого тега, но ПЕРЕД закрывающим тегом .
<script type='text/javascript'> // Label Cloud User Variables var cloudMin = 1; var maxFontSize = 21; var maxColor = [79,148,205]; var minFontSize = 11; var minColor = [180,205,205]; var lcShowCount = false; </script> |
Все строки могут быть изменены, но объясним их значение позже. Пока для нас важно чтобы заработали эти настройки по умолчанию.
3. Теперь займемся модификаций виджета «Ярлыки». Находим в шаблоне место (или подобное ему — ищите по значениям id, type)
<b:widget id='Label1' locked='false' title='Labels' type='Label'/> |
Копируем следующий код от начала до конца и заменяем им данную строку.
<b:widget id='Label1' locked='false' title='Label Cloud' type='Label'> <b:includable id='main'> <b:if cond='data:title'> <h2><data:title/></h2> </b:if> <div class='widget-content'> <div id='labelCloud'/> <script type='text/javascript'> // Don't change anything past this point ----------------- // Cloud function s() ripped from del.icio.us function s(a,b,i,x){ if(a>b){ var m=(a-b)/Math.log(x),v=a-Math.floor(Math.log(i)*m) } else{ var m=(b-a)/Math.log(x),v=Math.floor(Math.log(i)*m+a) } return v } var c=[]; var labelCount = new Array(); var ts = new Object; <b:loop values='data:labels' var='label'> var theName = "<data:label.name/>"; ts[theName] = <data:label.count/>; </b:loop> for (t in ts){ if (!labelCount[ts[t]]){ labelCount[ts[t]] = new Array(ts[t]) } } var ta=cloudMin-1; tz = labelCount.length - cloudMin; lc2 = document.getElementById('labelCloud'); ul = document.createElement('ul'); ul.className = 'label-cloud'; for(var t in ts){ if(ts[t] < cloudMin){ continue; } for (var i=0;3 > i;i++) { c[i]=s(minColor[i],maxColor[i],ts[t]-ta,tz) } var fs = s(minFontSize,maxFontSize,ts[t]-ta,tz); li = document.createElement('li'); li.style.fontSize = fs+'px'; li.style.lineHeight = '1'; a = document.createElement('a'); a.title = ts[t]+' Posts in '+t; a.style.color = 'rgb('+c[0]+','+c[1]+','+c[2]+')'; a.href = '/search/label/'+encodeURIComponent(t); if (lcShowCount){ span = document.createElement('span'); span.innerHTML = '('+ts[t]+') '; span.className = 'label-count'; a.appendChild(document.createTextNode(t)); li.appendChild(a); li.appendChild(span); } else { a.appendChild(document.createTextNode(t)); li.appendChild(a); } ul.appendChild(li); abnk = document.createTextNode(' '); ul.appendChild(abnk); } lc2.appendChild(ul); </script> <noscript> <ul> <b:loop values='data:labels' var='label'> <li> <b:if cond='data:blog.url == data:label.url'> <data:label.name/> <b:else/> <a expr:href='data:label.url'><data:label.name/></a> </b:if> (<data:label.count/>) </li> </b:loop> </ul> </noscript> <b:include name='quickedit'/> </div> </b:includable> </b:widget> |
После этого сохраняем изменения в шаблоне и проверяем результат. Если что-то не работает, то значит где-то допущена ошибка! Поэтому нужно проделать всю процедуру заново очень внимательно!
Кстати, автор называет возможные ошибки при создании облака. Во-первых, убедитесь, что хотя бы один из тегов имеет повторение, то есть использован более одного раза. Кроме того, нельзя использовать в тегах символ двойных кавычек «. При этом разрешатся писать одинарную кавычку ‘ или апостроф.
Вполне вероятно, что вид облака тегов по умолчанию будет не таким, как вы точно хотели. Но не расстраивайтесь! Все размеры и цвета могут быть настроены путем изменения нужных переменных. Рассмотрим значение переменных, которые мы добавили в шаблон на втором этапе настройки.
var cloudMin= 1;
Позволяет ограничить число тегов в облаке – параметр указывает количество повторений, требуемых для включения тега в облако. То есть, если вы установите, например, 3 – то в облаке тегов будут отображены только ярлыки с тремя и более повторений. Настройка, приведенная выше, позволяет отобразить все теги.
Переменные maxFontSize, maxColor соответственно задают размер шрифта и цвет для тега, который встречается в облаке наиболее часто. По аналогичному принципу работают переменные minFontSize, minColor, только для тегов с наименьшим повторением. Параметры всех ярлыков, расположенных между максимальным и минимальным значениями, рассчитываются исходя из общего количества тегов и частоты их употребления.
Чтобы получить нужный вам вариант оформления облака тегов нужно немного поэкспериментировать с цветом и размерами. Кроме того, для облака необходимо достаточно количество ярлыков, 3-4 будет маловато.
Внимание, когда вы изменяете настройку цвета, придерживайтесь нужного формата, приведенного в примере – использование закрывающих кавычек [] и разделения значений запятыми. Если вы не в курсе RGB кодов для цветов, можете воспользоваться следующей таблицей (нужные значения в первой колонке).
Последняя переменная lcShowCount может принимать значения «истинно» (true) и «ложно» (false). Отвечает за отображение количества повторений того или иного тега в блоге. По умолчанию эта настройка выключена.
Что касается секции стилей (CSS), то там также есть несколько мест, которые можно изменить под себя.
#labelCloud {text-align:center;font-family:arial,sans-serif;}
Здесь вы можете изменить шрифт, используемый в облаке, или же выравнивание:
text-align:justify;
text-align:right;
text-align:left;
Если вы хотите, чтобы теги выстраивались в столбик, то в строке:
#labelCloud .label-cloud li{display:inline;background-image:none !important;padding:0 5px;margin:0;vertical-align:baseline !important;border:0 !important;}
Заменяем display:inline; на display:block;.
И на последок строка:
#labelCloud .label-count
Она задает стиль для метки количества вхождений. Конечно, если данная особенность облака активирована.
Если и этого вам мало, можно сделать для блога еще одну фишку. Вы, наверное, заметили, что Blogger использует вместо понятия тегов «ярлыки». И соответственно под каждым сообщением идет перечень установленных вами тегов, перед которыми используется слово «Ярлыки». Можно это изменить!
Заходим в раздел «Шаблон», меню «Изменить HTML», далее активируем галочку в верхнем правом углу «расширить шаблоны виджета». После этого находим в коде блок:
<p class='post-footer-line post-footer-line-2'> <span class='post-labels'> <b:if cond='data:post.labels'> <data:postLabelsLabel/> <b:loop values='data:post.labels' var='label'> <a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != "true"'>,</b:if> </b:loop> </b:if> |
В нем вместо строки
Читать также:
Облако тегов: определение, назначение, создание (часть1)
Добаление счетчика и контактов в блог от Blogger
Создание блога на Blogger.com (постскриптум)
Подписаться на RSS блога можно здесь.
Наконец появился виджет, реализующий концепцию облака тегов, не надо заморачиваться с кодом, хотя и не так красиво получается http://devsac.blogspot.com/2009/02/dynamic-label-cloud-gadget.html
Тод, извини, что не в тему, но раз уж разговор о Технорати зашёл здесь, то здесь и спрошу, мона?
Было бы здорово, если б ты так внятно, как это умеешь только ты, рассказал, что за что — этот Технорати, и как с ним работать русскоязычному юзеру. :)
Думаю, многие тебе б в ножки за это поклонились. :))
Allpa, Технорати — некий сервис для блогов, где есть рейтинг, поиск и куча других возможностей. В рунете видел парочку статей про него, там, в принципе, можно почитать. Сервис англоязычный и в первую очередь ориентирован на данную аудиторию, хотя точно также работает и с русскими блогами. Полгода назад я использовал его чтобы смотреть обратные ссылки на себя — кто обо мне пишет, по идее, таким же функционалом обладает Яднекс, к тому же ориентирован на русскоязычных пользователей.
Tod, все спс разобрался =)) Теперь пойду облагораживать свой блог — виджеты устанавливать =))
Здравствуйте. У меня получилось добавить облако тегов, но почему то все теги идут просто в столбик, по одному в строке. Как сделать чтоб в строке было несколько тегов?
Dimyan, действительно странно. Попробуй еще разок все сделать по инструкции, если не получится — пиши в аську, я сам код посмотрю.
Ох и заморочек у этого blogger’a. Хочу на Drupal перелазить.
Кстати интересный у вас блог, подписался :)
Добрый день,
Установила Облако, всё получилось прекрасно. Но несколько дней спустя оно вдруг слетело, остался только заголовок. Несколько раз делала, но результат — нулевой. На третьем шаге заменяю
Vera, должно все работать, можешь еще глянуть у автора скрипта в оригинальной статье — phy3blog.googlepages.com/Beta-Blogger-Label-Cloud.html, возможно, где-то в коде ошибка. При нестандартном шаблоне нужно удалить не только строчку, а и некоторый другой код для блока с тегами. Не забывай ставить галочку «расширить шаблоны виджета».
СПАСИБО Вам огромное! С первого раза все получилось! :) Сегодня мой блог обогатился новым виджетом :)
Переделывала несколько раз, пока не обратила внимания на то, что у меня один тег (поросёнок!) стоял в двойных кавычках. Ё-моё!!!
Спасибо за поддержку.
Если Блоггер не допускает наличие javascript в коде что делать в этом случае?
Robbie_Raul, для javascript в Блоггере есть отдельный элемент. В самом тексте поста, конечно, добавить не получится, зато в сайдбаре и где-то еще можно.
А на чем это всё делать то? В какой пронрамме(где найти эти блок «Шаблон», элементы страницы…)?
А все, смотрится отлично ^^ спасибо огромное за статью
to влад
“…то есть снова находим в шаблоне ]]>, но вставляем код ПОСЛЕ этого тега, но ПЕРЕД закрывающим тегом .” сбило с толку по началу (ставил код перед /b:skin, и думаю не я один) – код нужно вставлять после /b:skin, но перед head, иначе будет выше упоминавшиеся ошибка – “Оболочка не может содержать элемент script. Допускаются только текст и разделы CDATA.”
——————
Спс. помогло.
PS: Можно ли прикрутить облоко тэгов не вместо Ярлыков? Я лично откатил, мне ярлыки больше по душе:-) Но как дополнительный виджет я бы оставил.
u menya nikak ne poluchaetsya, chto sdelat?
у меня все вроде бы получилось. я имею ввиду сделал изменения в коде. сохранилось удачно. но….
когда зашел на свой блог cdt-brulik.blogspot.com/ все осталось как и прежде. хотя в схеме сайта появилось окно
я конечно впервые с этим работаю. как слова-тэги добавлять?
При создании поста внизу есть поле для тегов или меток, туда добавлять. Потом лишь создается облако тегов, без введенных меток оно и работать не будет.
Нашел ошибку…заменить надо не строку
А полностью весь старый виджет облака…
т.е. от до
И все будет работать))
Вопрос, почему у меня при сохранении ошибок никаких нет, но облако не отражается? PS кстати сами виджеты (именно ярлыки) тоже не отражаются на странице.
VAR, если вы про блог, который в подписи, то там нет (или мало) тегов и всего одна запись.
А можно ли скрыть некоторые теги?
Хочу из стандартного виджета сделать список рубрик, а из облака тегов убрать названия этих тегов-рубрик, чтобы не мешали.
Оксана, да можно, в настройках виджета облака тегов можно выбрать не «все теги», а опцию рядышком, где вроде как можно отметить нужные элементы.
Нет, я хочу скрыть теги в этом облаке, а в стандартном виджете я разобралась ;)
Меня внезапно озарило, что у этого облака тоже есть опции :D
Спасибо :)
Большое вам спасибо за скрипт!!!!
Реально полезный урок! клевые теги получаюстся =) спасибо автору
Спасибо! Благодаря вам всё получилось, но тут у меня возникла проблема — как защитить ярлыки в облаке от индексации Google? Спасибо!
Андрей, нужно внимательно изучить код и посмотреть может можно добавить rel nofollow туда для запрета индексации, я такого не делал поэтому не могу подсказать.
Да вот, всё ковыряю… Есть только одно место, туда вставляю rel nofollow, потом смотрю код ярлыка — нету этого rel nofollow. Ладно, спасибо, буду экспериментировать :-)
Андрей, к сожалению, на Блоггере не все так просто, я как-то тоже добавлял nofollow в разные нужные места, так не везде получилось это реализовать.