8.17.2009

Ajax облако тегов для Blogger

На сегодняшний момент это новейшая функция, которая улучшает работу блога в разы.

Ajax на много ускоряет работу блога. Это очень удобный виджет, работает в броузерах FireFox, Opera, InternetExplorer6 и др.

Хитрость быстроты работы такого облака тегов, это то, что перезагружается только колонка с сообщениями, а вы остаётесь на прежней странице.

Для того, чтобы облако работало нужно использовать XML шаблон(Не класический)

На моём блоге установлено ajax облако тегов, можете использовать в качестве примера.

Чтобы установить ajax облако тегов на своём блоге, выполните операции по инструкции, которые расположены ниже:



Шаг #1 | Шаг #2 | Шаг #3 | Шаг #4 | Шаг #5 | Шаг #6 |


Установка Ajax облака тегов(Инструкция)

Эту операцию (Шаг #1,#2) необходимо сделать если у вас ещё не установлено облако тегов.

Если установлено, то переходите к Шагу #3

Приступим к раблоте...

Шаг #1

Чтобы добавить ajax облако тегов в свой блог нужно выполнить не сколько действий:


Перейдите в Настройки блога > Макет >


Затем перейдите по ссылке: "Добавить гаджет"


Добавьте виджет "Ярлыки"

Теперь перейдите в вкладку Макет> Изменить HTML

Найдите в шаблоне тег

]]></b:skin>

Перед ним вставьте код расположеный ниже:

/* 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

Теперь найдите следующий код

]]></b:skin>

Сразу после него, но перед этим тегом

</head>

вставьте скрипт расположеный ниже:
<script type='text/javascript'>

// Label Cloud User Variables

var cloudMin = 1;

var maxFontSize = 20;

var maxColor = [0,0,255];

var minFontSize = 10;

var minColor = [0,0,0];

var lcShowCount = false;

</script>


Шаг #3

Сейчас вы должны будете выполнить ответственную операцию

Проверьте галочку "Расширить шаблоны виджета", она должна быть не нажата

Найдите код примерно похожий на этот:


<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&gt;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 = &quot;<data:label.name/>&quot;;

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] &lt; cloudMin){

continue;
}
for (var i=0;3 &gt; 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.className = 'phyLabel';

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>


Шаг #4

Теперь найдите этот тег
]]></b:skin>


Сразу после него, но перед этим тегом

</head>

вставьте скрипты расположеные ниже:


<script src='http://myslvscript.googlecode.com/files/jquery-latest_pack.js'
type='text/javascript'/>


<script src='http://myslvscript.googlecode.com/files/jq_plugins.js'
type='text/javascript'/>



<script src='http://myslvscript.googlecode.com/files/slvbase1.js'
type='text/javascript'/>

<script type='text/javascript'>


function labelLabel(label){

$(&#39;#top&#39;).ScrollTo(100);

$(&#39;#main&#39;).html(&#39;&lt;div id=&quot;phyLoad&quot; style=&quot;margin-top:5px&quot;&gt;&lt;img src=&quot;http://myslvscript.googlecode.com/files/spinner_white.gif&quot; style=&quot;vertical-align:middle; padding-right:5px;&quot;/&gt;Загрузка...&lt;/div&gt;&#39;).json( &#39;http://ВашUrlБлога.blogspot.com/feeds/posts/summary/-/&#39;+label+&#39;?max-results=50&amp;orderby=published&amp;alt=json-in-script&amp;callback={callback}&#39;, pDisplayLabels );

}

</script>


<script src='http://myslvscript.googlecode.com/files/slvbase2.js'
type='text/javascript'/>

Не забудьте заменить Слово в скрипте ВашUrlБлога на url-адрес вашего блога.


Шаг #5

Эта операция понадобится, если вы свой шаблон сильно изменяли или он имеет не стандартный вид.

Найдите в шаблоне код похожий на этот

<b:widget id='Blog1' locked='true' title='Сообщения блога' type='Blog'/>

Перед ним располжен код похоий на этот

<b:section class='main' id='center-wap' showaddelement='no'>

или этот

<b:section id='main' showaddelement='no'>

Замените его на код расположеный ниже:

<b:section class='main' id='main' showaddelement='no'>

Если на вашем блоге установлен архив блога в виде календаря необходимо выполнить обязательную операцию:

Найдите этот код в шаблоне

<script src='http://code.jquery.com/jquery-latest.min.js' type='text/javascript'/>


Его нужно обязательно удалить.

Эта операция не повлияет на работу архива блога в виде календаря.


Шаг #6

Дальше уже идёт настройка дизайна.

Перейдите по ссылке которая расположена ниже...


Галерея дизайнов сообщений для ajax облака тегов

Шаг #1 | Шаг #2 | Шаг #3 | Шаг #4 | Шаг #5 | Шаг #6 |

11 коммент:

tussauds комментирует...

Вячеслав,чтобы предпринять такие изменения, нужно быть уверенным полностью, что шаблон не "поведет". Кроме того, я не совсем уверена, что это сработает... У меня шаблон не стандартный, как Вы заметили. Однако, у меня предусмотрена связь с читателями на блоге. У Вас я не нашла как можно связаться с Вами. Оставьте свой e-mail мне или отпишитесь через форму в моем блоге About me -> contact. Так будет проще обсуждать дальнейшие действия. Спасибо.

Вячеслав комментирует...

Шаблон не подведёт, перед тем, как публиковать эту статью, я её протестировал на десятках нестандартных шаблонах.

Вероятность что не подойдёт очень мала.

tussauds комментирует...

По правде говоря, меня испугал объем предложенных кодов... У меня уже внесены изменения в сам шаблон, т.к. я предполагала, что сообщения будут длинными и предусмотрела этот момент. А потом в каждый пост вставляла небольшой код для "читать далее". Мне необходимо, чтобы только часть текста была на главной странице из-за изобилия изображений (которые я привыкла скрывать). Далее, мне не ясно - предыдущие изменения мне придется удалить (?). Тогда не испортятся ли старые сообщения. Действительно при нажатии какого-либо тега на Главной странице, все сообщения отображаются по-разному. Вот это меня и бесит. Я пыталась вносить вручную изменения в каждый пост. Однако НЕ все посты отреагировали "правильно" - некоторые по-прежнему отображаются полностью. Исправится ли эта заморочка, если я так глобально возьмусь вносить изменения?

Вячеслав комментирует...

Если эта проблема относится к Ajax облаку тегов, то это делать бессмысленно, потому, что оно без ваших усилий, автоматически уменьшает размер изображения, даже если вы не устанавливали пост-резюме(Читать полностью...)

Если эта проблема относится просто к ярыкам, то повозиться с изменениями придётся...

Ещё у вас возникала проблема, некоторые посты отображались в полном виде при установленном пост резюме и с изменениями в сообщении, у меня первое время была та же ерунда, но тут есть хитрый код, который решит эту проблему:

для того, чтобы скрывать часть сообщения вы используйте не

<span class="fullpost">................</span>

а
<div class="fullpost">..................</div>

С этим вариантом проблем быть не может...(конечно может, но в очень редком случае, так как тег
<div> очень редко встречается в тексте вашего сообщения(может вообще ни разу не встречался))

Вячеслав комментирует...

Да и ещё, я глянул на тело вашего шаблона, у вас то, что необходимо для ajax облака тегов, находится в стандартном виде.(тело колонки с сообщениями "main-wrapper")

Это очень хорошо и это ajax облако тегов вам идеально встанет.

tussauds комментирует...

Вячеслав, ну Вы меня просто убиваете! Я все делала по инструкции. По порядку. Сделала и дошла до последнего шага и тут вываливается "у вас нет доступа к этому документу"... Что это за ерунда? Мне пришлось все изменения удалить. Точнее, не сохранять.. И еще Шаг#2 и Шаг#4 слишком похожи. Вы не находите? А речь идет лишь об одном коде (b:skin). И если мы уже после него что-то вставили (шаг2), то в шаге4 нужно уточнить все-таки местоположение следующего кода.

Вячеслав комментирует...

Приношу извинения, я даже не мог предполагать, что google не даёт доступ посторонним просматривать документы. Больше такого не повторится, ошибка исправлена.

tussauds комментирует...

Обратите внимание на мой вопрос... Я "заблудилась" окончательно и поШАГово. =)))

Вячеслав комментирует...

Наталья, чтобы не было ошибок, нужно во первых после каждого шага сохранять изменения, а перед тем, как вносить изменения - делать копию своего шаблона.

Чтобы всё получилось, нужно держать шаблон по пути создания ajax облака тегов в коротком виде(галочка расширить шаблон виджета должна быть выключенной)

А сохранять через каждый шаг нужно обязательно, иначе возникнут ошибки.(Объяснять почему не буду)

Шаг#2 и шаг#4 может быть похожи, но это не значит что их можно игнорировать. Если мы между тегами ]]></b:skin> и </head> что то вставляли, то это не значит, что больше туда ничего вставлять нельзя.

Вы можете вставить скрипты(код который предлагается в шаге2 и 4) в любое место между этими двумя тегами.

Конечно чем выше тем лучше. Рас шаблон вы скачали у кого то, значит между этими тегами может быть ещё скрипты, которые не ваши(не вашего происхождения).

Я немного изменю этот пост, будет объяснена каждая мелочь.

Возникнут вопросы задавайте...

tussauds комментирует...

Вячеслав! Огромное Вам спасибо! Моя скорость меня подвела. Поспешила, видимо. Получилось просто восхитительно! Я очень довольна - слов нет. =)

Вячеслав комментирует...

Здравствуйте Sergei. Почему у вас не вышло даже не могу предположить, шаблон у вас стандартный. Если не против, отправьте свой XML-код шаблона, сделаю.

slava_vvk@mail.ru

Последние комментарии