Вывод частоиспользуемых тегов в Mosquito BM

Добавляем в файл /plugins/tags/func.inc пару функций фунцию top_tag_cloud выводящую популярные теги и ShuffleAcArray для перемешивания ассоциативного массива

function ShuffleAcArray($arBla) {
    $num = count($arBla);
    $arResult = array();
    while($arBla) {
        $rkey = array_rand($arBla);
        $arResult[$rkey] = $arBla[$rkey];
        unset($arBla[$rkey]);
    }    
    return $arResult;
}

function top_tag_cloud($s, $top) {
	global $_s;
	$d = dir($_s['tags_dir'].'/cache');
	while (false !== ($entry = $d->read()))
	if ($entry!='.' && $entry!='..') $tags[$entry] = sizeof(explode(',',file_get_contents($_s['tags_dir'].'/cache/'.$entry)));
	$d->close();
	arsort($tags);
	$tags = ShuffleAcArray(array_slice($tags, 0, $top));
	$e=explode(':',buffer('Tags','sett'));
	if(@trim($e[0])) $_s['tag_tag_translit']=1;
	else $_s['tag_tag_translit']=0;
	if(isset($tags)) foreach($tags as $tag => $size) e(" <a href='?t=".$tag."' title='Записей: ".$size."'><font size=\"".(($size*$s)+0.5)."px\">".tag_translit($tag,1)."</font></a> ");
}

Для вывода популярных тегов в необходимом месте добавляем php код top_tag_cloud(0.1, 20); работающая почти аналогично выводу облока тегов.
Где 0.1 — коофициент увеличения шрифта, например, в блоке можно поставить поменьше, а при выводе на отдельной странице - побольше
А число 20 - это количество тегов которые вы хотите вывести.

Пример сего можно посмотреть справа от сей заметки в блоке «Частые теги», правда я вырезал теги которые используются у меня в качестве категорий меню (linux, jabber, mosquito)
eremite 09-09-2009
Спасибо! У меня только пока немного тегов, чтоб частые выводить:)
muhas 09-09-2009
а у мну как-то много накопилось =(
bolzamo 09-09-2009
В целом все прикольно, и даже, по-моему, вроде на моей функции...
Вообще, рекомендую обратить внимание на более оптимальную реализацию - как это сделано в последней версии плагина bjblocks к NAE( http://atomic.neutrino.net.ru/ )
Он в комплекте, так что смело качай последнюю версию, и смотри в ext/bjblocks/index.php функцию ext_bjblocks_taglist().
muhas 09-09-2009
> В целом все прикольно, и даже, по-моему, вроде на моей функции...
ну так вроде же на основе твоего кода плагин тего в написан, я всего лишь взял и дополнил одну из функций

>Вообще, рекомендую обратить внимание на более оптимальную реализацию
Посмотрел, но толи знаний не хватает толи ещё чего, не понял в чем она более оптимальная =)

Кстати, а что у тя кучки малосвязных элементов запиханы в один плагин? мне казалось что теги. prev_next посты и похожие посты логичнее выносить в отдельные блоки включая и их функции либо держать его в отдельных плагинах. Или у мну логика неправильная?