Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Кастомизация облака тегов

Тема в разделе "Хаки DLE", создана пользователем Sander, 19 ноя 2016.

19.11.16 в 14:53
19.11.16 в 19:29
15
1.936
3
  1. TopicStarter Overlay
    Sander

    Sander Новичок

    Регистрация:
    5 мар 2016
    Сообщения:
    49
    Лучших ответов:
    0
    Рейтинги:
    +101 / 0 / -0
    [​IMG]
    Решил попробовать сделать симпатичные ссылки в облаке тегов и столкнулся с несколькими проблемами по части настройки шаблона.
    В частности речь о полном отсутствии возможности настроить свой шаблон. Еще и эти обязательные "запятые" тоже не к месту, а чтобы что-то изменить или убрать - необходимо только вносить изменения в сами 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&amp;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&amp;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&amp;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]
    где
    Бонус:
    В шаблоне 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>
    Код:
    .numbertag a,
    .finetags a{
        box-sizing: border-box;
        display: inline-block;
        height: 27px;
        border: 1px solid #d4d4d4;
        border-bottom-color: #c7c7c7;
        border-radius: 3px 0 0 3px;
        box-shadow: 0 1px 3px rgba(0,0,0,.3);
        background: #f8f9fa url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAbCAIAAAAyOnIjAAAAGklEQVQImWP48+cPEwMDA9P///8pomEYjzoAdawnBT2E540AAAAASUVORK5CYII=) repeat-x 0 0;
        color: #222;
        font: bold 12px/25px 'Trebuchet MS',Tahoma,sans-serif;
        text-decoration: none;
        padding: 0;
        position: relative;
        margin:0 15px 11px 0;
    }
    .finetags a{
        padding: 0 15px;
    }
    .numbertag a:hover,
    .finetags a:hover{
        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAbCAIAAAAyOnIjAAAAGUlEQVQImWP48OEDEwMDAxwzMjJSROMxBwA7vQMmCBtaoAAAAABJRU5ErkJggg==);
    }
    
    .numbertag a>span{
        display: inline-block;
        position: relative;
    }
    .numbertag .tagname{
        padding: 0 15px;
    }
    .numbertag .tagcount{
        padding: 0 8px;
        font: bold 11px/27px Tahoma;
        color: #fff;
        background: #db5a0f url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAbCAIAAAAyOnIjAAAAJUlEQVQImWP4Xm/HxMDAwPT37x8mBgYGpn9//0JpKP8fGp98eQBJnih8eyJnCAAAAABJRU5ErkJggg==) repeat-x 0 0;
    }
    
    .tagcount:after,
    .tagcount:before,
    .finetags a:after,
    .finetags a:before{
        content: "";
        display: block;
        left: 100%;
        top: 0;
        position: absolute;
        width: 5px;
        height: 27px;
    }
    .finetags a:after{
        margin-left: -4px;
    }
    .finetags a:before{
        margin-left: 1px;
    }
    .tagcount:before{
        left: -5px;
    }
    .tagcount:before,
    .finetags a:after{
        background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAbCAYAAAC0s0UOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANVJREFUeNqMUksKwjAUfEmjtVKpooKgGzeuXXqM4sKt4KpH8g5uPIF4IJeiiO0bXyqCTSKY8AIZ5n1mEgWAPuu8W2IxSkhTYDVA2A0XhAXZSa9BuEz2mbYe+C+msMBuIwowu5GiSGY1h/V8lcW6GCYmn6QRdQyRMQrFINbbcaIFUJIqTKHnsRRpKZCqu4vMkvl4Lyt6SFT8bmTksr/cQMxR3o91lra1ZHz5edrMMO2Z5kjXZ0Vl5SliX5GVyZ52ClqHXy4h5BJ85+1hmg/HEir8GV4CDAA2PYgOGBxM/AAAAABJRU5ErkJggg==) no-repeat;
    }
    .tagcount:after,
    .finetags a:before{
        width: 3px;
        background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAbCAYAAAC5rTVJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANRJREFUeNpifFpm+Z8BCliEOFgY4Jz///8z/APK/fjzj4Hp//9/DN9//2kUbj/KyPCl2vI/SBaEwTKvyswaQHoYP1WY/Qfp+QnUwwKSYQSKggxl+f/vHwNMBqznB9A0if7zjAzvivRQTXuapw0x7XW+FsS0v/8gBoBNY2KAGA2RAer59+8v2G3y028xMjzLUEQ17W6KPMS0J6my/2F6WP4BTQMBdgzTwG7787dRfeFzRob78WKopl2LFoGYdjdWGGEaA1AGaBADJzPQtPc//sEDESDAAKhfo4cJlrA+AAAAAElFTkSuQmCC) no-repeat;
    }

    Пример работы можно посмотреть на сайте http://color.sandev.pro/tags/

    Автор: http://sandev.pro/web/102-kastomizaciya-oblaka-tegov.html

    С уважением,
    Олег Александрович a.k.a. Sander
     
    • Нравится Нравится x 3
  2. aeneas

    Забанен

    Регистрация:
    12 мар 2016
    Сообщения:
    11.489
    Лучших ответов:
    10
    Рейтинги:
    +4.043 / 208 / -0
    а зачем это ?
     
  3. pan_oleksandr

    pan_oleksandr Посетитель

    Регистрация:
    18 фев 2016
    Сообщения:
    89
    Лучших ответов:
    1
    Рейтинги:
    +25 / 0 / -0
    Таки шоб было красиво.
     
    • Нравится Нравится x 1
  4. Karabas Barabas

    Команда форума VIP Кинотрафик v2

    Регистрация:
    20 ноя 2015
    Сообщения:
    8.172
    Лучших ответов:
    1
    Рейтинги:
    +3.756 / 12 / -0
    А кто то использует их у себя на киношнике? o_O
     
  5. www7sergey

    www7sergey Посетитель

    Регистрация:
    13 окт 2016
    Сообщения:
    63
    Лучших ответов:
    0
    Рейтинги:
    +13 / 0 / -0
    Я вывожу на главной 50 популярных
     
  6. Karabas Barabas

    Команда форума VIP Кинотрафик v2

    Регистрация:
    20 ноя 2015
    Сообщения:
    8.172
    Лучших ответов:
    1
    Рейтинги:
    +3.756 / 12 / -0
    На этом? on-*****ino.com
     
  7. aeneas

    Забанен

    Регистрация:
    12 мар 2016
    Сообщения:
    11.489
    Лучших ответов:
    10
    Рейтинги:
    +4.043 / 208 / -0
    так то для ПФ может норм хз, тыкать переходы делают, иначе так то не упало нах них
     
  8. www7sergey

    www7sergey Посетитель

    Регистрация:
    13 окт 2016
    Сообщения:
    63
    Лучших ответов:
    0
    Рейтинги:
    +13 / 0 / -0
    и на нем тоже. Вывожу для лучшей перелинковки (ну это чисто мое мнение), мне кажется для поисковиков так лучше.
     
  9. aeneas

    Забанен

    Регистрация:
    12 мар 2016
    Сообщения:
    11.489
    Лучших ответов:
    10
    Рейтинги:
    +4.043 / 208 / -0
    у тебя теги идексируются чтоли ))
     
  10. www7sergey

    www7sergey Посетитель

    Регистрация:
    13 окт 2016
    Сообщения:
    63
    Лучших ответов:
    0
    Рейтинги:
    +13 / 0 / -0
    а что, не должны?
     
  11. aeneas

    Забанен

    Регистрация:
    12 мар 2016
    Сообщения:
    11.489
    Лучших ответов:
    10
    Рейтинги:
    +4.043 / 208 / -0
    вообще то нет ) это же мусор дублей )
     
  12. www7sergey

    www7sergey Посетитель

    Регистрация:
    13 окт 2016
    Сообщения:
    63
    Лучших ответов:
    0
    Рейтинги:
    +13 / 0 / -0
    о блин, а как их закрыть? в robots.txt?
    Так? - Disallow: /tags/
     
  13. Karabas Barabas

    Команда форума VIP Кинотрафик v2

    Регистрация:
    20 ноя 2015
    Сообщения:
    8.172
    Лучших ответов:
    1
    Рейтинги:
    +3.756 / 12 / -0
  14. aeneas

    Забанен

    Регистрация:
    12 мар 2016
    Сообщения:
    11.489
    Лучших ответов:
    10
    Рейтинги:
    +4.043 / 208 / -0
    я донботом закрываю )
    теги, поиск, пагинацию, ну короче все дубли закрывать над ) это модно )
     
    • Нравится Нравится x 1
  15. Karabas Barabas

    Команда форума VIP Кинотрафик v2

    Регистрация:
    20 ноя 2015
    Сообщения:
    8.172
    Лучших ответов:
    1
    Рейтинги:
    +3.756 / 12 / -0
    Даже Алаич это советует)

    Алаич.png
     
    • Нравится Нравится x 2
  16. aeneas

    Забанен

    Регистрация:
    12 мар 2016
    Сообщения:
    11.489
    Лучших ответов:
    10
    Рейтинги:
    +4.043 / 208 / -0
    @Karabas Barabas, это наш Роман там интересовался да ? )
     
Яндекс.Метрика