Облако тегов 1.0.0

Добавляет возможность вывода облака поисковых тегов.

  1. Exile
    Совместимость:
    не проверялся на совместимость
    Изменения в БД:
    не требуются
    Автор:
    frost444
    Общественное достояние:
    да
    Описание: добавляет возможность вывода облака поисковых тегов.
    Инструкция по установке:
    PHP:
    ----в нужный файл к примеру index.php
    if ($bb_cfg['tags']['on'])
    {
        if (!
    CACHE('bb_cache')->get('tags'))
        {
            
    $sql_t DB()->fetch_rowset("SELECT t.topic_title
                FROM   "
    .BB_BT_TORRENTS." AS tt, ".BB_TOPICS." AS t
                WHERE t.topic_id = tt.topic_id
                GROUP BY tt.reg_time DESC LIMIT 40"
    );

            
    $sql_t['tag'] = tag_encode(r_implode(" "$sql_t));
            
    $sql_t['tag'] = iconv("UTF-8""CP1251//IGNORE"$sql_t['tag']);
            
    $sql_t['title'] = "Кешированные теги";

            
    $row = array();
            
    $row['tag'] = $sql_t['tag'];
            
    $row['title'] = $sql_t['title'];
            
    CACHE('bb_cache')->set('tags'$row$bb_cfg['tags']['cache']*60*60'UTF-8');
        }else{
            
    $sql_t CACHE('bb_cache')->get('tags');
        }

        @
    $tagi iconv("CP1251""UTF-8"$sql_t['tag']);
        
    $tags explode(" "$tagi);
        
    $mycloud   = new TagsCloud($tags);
        
    $tags_list $mycloud->get_cloud();

        foreach (
    $tags_list as $tag)
        {
            
    $nbsp $bb_cfg['tags_flash'] ? '' ' ';
            
    $template->assign_block_vars('tagrow', array(
                
    'TAGS'     => $tag.$nbsp
            
    ));
        }
    }

    ----
    в файл шаблонак примеру index.tpl
    <!-- IF $bb_cfg['tags']['on'] -->
    <
    div class="post_body_m">
        <
    class="footeri"><u>Теги:</u></a>
        <
    script type="text/javascript">
            $(
    document).ready(function(){
                var 
    f_color '';
                $(
    "a.structure").hover(function() {
                    
    f_color this.style.color;
                    $(
    this).animate({ backgroundColor"#4f94d0"color"#ffffff" }, 700);
                },function(){
                    $(
    this).animate({ backgroundColor"white"color"#4b73d4" }, 200);
                });
            });
        
    </script>
        <!-- BEGIN tagrow -->{tagrow.TAGS}<!-- END tagrow -->
    </div>
    <!-- ENDIF -->

    ----в config.php
    $bb_cfg['tags'] = array(
      'on'          => true,
      'cache'       => 2, //кеш держится в часах
    );
    ----functions.php
    function tag_encode($str)
    {
        $str = mb_strtolower(trim($str), 'UTF-8');
        $str = strip_tags($str);

        $search  = array('#([\ri\n])[\s]+#is','#[^a-zа-я\/\s]#ui','#\s+#i','#[\/]#','#_+#');
        $replace = array(' ',' ',' ',' ',' ');

        $str = preg_replace($search, $replace, $str);

        $str = strtr($str, array("а"=>"а","б"=>"б","в"=>"в","г"=>"г","д"=>"д","е"=>"е","ё"=>"е","ж"=>"ж","з"=>"з","и"=>"и","й"=>"й","к"=>"к","л"=>"л","м"=>"м","н"=>"н","о"=>"о","п"=>"п","р"=>"р","с"=>"с","т"=>"т","у"=>"у","ф"=>"ф","х"=>"х","ц"=>"ц","ч"=>"ч","ш"=>"ш","щ"=>"щ","ъ"=>"ъ","ы"=>"ы","ь"=>"ь","э"=>"э","ю"=>"ю","я"=>"я"));

        $str = preg_replace("/[\s]([^\s]{1,5})[\s]/", " ", str_replace(" ", "  ", " ".$str." "));
        $str = preg_replace('/ +/',' ' , $str);

        $str = trim($str, " ");

        return $str;
    }
    function r_implode( $glue, $pieces )
    {
      foreach( $pieces as $r_pieces )
      {
        if( is_array( $r_pieces ) )
        {

          $retVal[] = r_implode( $glue, $r_pieces );
        }
        else
        {
          $retVal[] = $r_pieces;
        }
      }
      return implode( $glue, $retVal );
    }