Решил попробовать сделать симпатичные ссылки в облаке тегов и столкнулся с несколькими проблемами по части настройки шаблона.
В частности речь о полном отсутствии возможности настроить свой шаблон.
Еще и эти обязательные "запятые" тоже не к месту, а чтобы что-то изменить или убрать - необходимо только вносить изменения в сами php файлы. Вот решением этих проблем мы и займемся. И в качестве бонуса дам код и стили тегов как на картинке.
Установка
Открыть файл engine/modules/show.full.php
Найти строку:
$tpl->set( '{tags}', implode( ", ", $tags ) );После нее вставить:
////////////////////////////////////////////////////////////////////////////////////////////////
            if(preg_match("#{tags=['\"]([^'\"]*)['\"]}#i",$tpl->copy_template,$sep)) $tpl->set($sep[0],implode($sep[1],$tags));
////////////////////////////////////////////////////////////////////////////////////////////////Теперь в шаблоне fullstory.tpl можно выводить теги тегом:
{tags=""}где в кавычках указывается символ или текст разделитель между тегами. Вот так можно повторить вывод стандартного тега:
{tags}
{tags=", "}
Теперь сама страница облака тегов:
Открыть файл engine/modules/tagscloud.php
Найти строку:
} else $sql_select = "SELECT tag, COUNT(*) AS count FROM " . PREFIX . "_tags GROUP BY tag";После нее вставить:
////////////////////////////////////////////////////////////////////////////////////////////////
        $tagsort = 'tag';
        if(preg_match("#\\[list([^\]]*)\\](.+?)\\[/list\\]#is",$tpl->copy_template,$tpl_list)){
            $limit = false;
            $sep = '';
            if(preg_match("#limit=['\"](\d+)['\"]#i",$tpl_list[1],$lm)){
                $lm = intval($lm[1]);
                if($lm>0){
                    $limit = true;
                    $sql_select = "SELECT tag, COUNT(*) AS count FROM " . PREFIX . "_tags GROUP BY tag ORDER BY count DESC LIMIT 0,$lm";
                }
            }
            if(preg_match("#sep=['\"]([^'\"]*)['\"]#i",$tpl_list[1],$sp)) $sep = $sp[1];
            if(preg_match("#sort=['\"](count|tag)['\"]#i",$tpl_list[1],$tgsr)) $tagsort = $tgsr[1];
        }
        if(!$limit) $sql_select = "SELECT tag, COUNT(*) AS count FROM " . PREFIX . "_tags GROUP BY tag ORDER BY count DESC";
////////////////////////////////////////////////////////////////////////////////////////////////
Найти строку:
usort ($list, "compare_tags");!Перед ней вставить:
////////////////////////////////////////////////////////////////////////////////////////////////
        if($tagsort=='tag')
////////////////////////////////////////////////////////////////////////////////////////////////
Найти код:
if ($config['allow_alt_url'] )
                    $tags[] = "<a href=\"".$config['http_home_url']."tags/".urlencode($value['tag'])."/\" class=\"{$value['size']}\" title=\"".$lang['tags_count']." ".$value['count']."\">".$value['tag']."</a>";
                else
                    $tags[] = "<a href=\"$PHP_SELF?do=tags&tag=".urlencode($value['tag'])."\" class=\"{$value['size']}\" title=\"".$lang['tags_count']." ".$value['count']."\">".$value['tag']."</a>";Заменить на:
////////////////////////////////////////////////////////////////////////////////////////////////
                if($tpl_list[2]){
                    if ($config['allow_alt_url'] ) $link = $config['http_home_url']."tags/".urlencode($value['tag'])."/";
                    else $link = $PHP_SELF."?do=tags&tag=".urlencode($value['tag']);
                    $temp = $tpl_list[2];
                    $temp = str_ireplace("{link}",$link,$temp);
                    $temp = str_ireplace("{tag}",$value['tag'],$temp);
                    $temp = str_ireplace("{count}",$value['count'],$temp);
                    $tags[] = $temp;
                }else{
                    if ($config['allow_alt_url'] )
                        $tags[] = "<a href=\"".$config['http_home_url']."tags/".urlencode($value['tag'])."/\" class=\"{$value['size']}\" title=\"".$lang['tags_count']." ".$value['count']."\">".$value['tag']."</a>";
                    else
                        $tags[] = "<a href=\"$PHP_SELF?do=tags&tag=".urlencode($value['tag'])."\" class=\"{$value['size']}\" title=\"".$lang['tags_count']." ".$value['count']."\">".$value['tag']."</a>";
                }
////////////////////////////////////////////////////////////////////////////////////////////////
Найти строку:
$tags = implode(", ", $tags);! Перед ней вставить:
////////////////////////////////////////////////////////////////////////////////////////////////
        if($tpl_list[0]) $tpl->copy_template = str_replace($tpl_list[0],implode($sep,$tags),$tpl->copy_template);
////////////////////////////////////////////////////////////////////////////////////////////////Теперь в шаблоне tagscloud.tpl можно вместо просто тега {tags} использовать конструкцию:
[list limit="100" sep="" sort="count"]<a href="{link}"><span class="tagname">{tag}</span><span class="tagcount">{count}</span></a>[/list]где
- limit - количество тегов
 - sep - в кавычках указывается разделитель между тегами, можно не указывать
 - sort - tag или count, соответственно сортировка по имени тега или по количеству
 
Все вышеперечисленные параметры не являются обязательными. Можно писать просто:
[list]<a href="{link}">{tag} ({count})</a>[/list]- {link} - адрес страницы тега
 - {tag} - имя тега
 - {count} - количество новостей с тегом
 
Бонус:
В шаблоне tagscloud.tpl использовать код:
<div class="numbertag">
            [list limit="100" sort="count"]<a href="{link}"><span class="tagname">{tag}</span><span class="tagcount">{count}</span></a>[/list]
        </div>В шаблоне fullstory.tpl код:
<div class="finetags">{tags=''}</div>Стили CSS
С уважением,
Олег Александрович a.k.a. Sander
						
        
        