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

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

Вопрос? Помогите настроить фильтр в шаблоне.

Тема в разделе "Вопросы- ответы", создана пользователем Tolstyak87, 9 апр 2018.

09.04.18 в 13:17
09.04.18 в 17:59
12
423
0
  1. TopicStarter Overlay
    Tolstyak87

    Tolstyak87 Бывалый

    Регистрация:
    21 мар 2018
    Сообщения:
    556
    Лучших ответов:
    2
    Рейтинги:
    +60 / 18 / -0
    Доброго времени суток уважаемые форумчане. Столкнулся с такой проблеммой: в шаблоне моего сайта есть фильтр для отображения новостей для посетителей, никак не могу разобраться, как его настроить и подкоректировать, чтоб работал. Что бы я ни пробовал - выдает ошибку.
    Ниже приведен код из файла фильтра (filter.tpl)......

    PHP:
    <script type="text/javascript" src="{THEME}/js/filter.js"></script>
    <div class="filter no-select">
        <div class="title"><i class="fa fa-calendar"></i> Год выпуска</div>
        <div id="xf_year" class="filter-slider">
            <span class="filter-value val1"></span>
            <span class="filter-value val2"></span>
        </div>
        <div class="title"><i class="fa fa-star-o"></i> Рейтинг КиноПоиск</div>
        <div id="xf_kinopoisk" class="filter-slider">
            <span class="filter-value val1"></span>
            <span class="filter-value val2"></span>
        </div>
        <div class="clr"></div>
    </div>
    <div class="filter-buttons no-select">
        <div class="butt yellow">
            <span>Выбрать жанры <i class="fa fa-angle-down"></i></span>
            <div class="list" id="genre-id">
                <div class="top">
                Фильмы
                    <span class="offin"><span id="one-genre">и</span><span id="all-genres" class="active">или</span></span>
                    <span class="about">
                        <b>и:</b> отберутся фильмы, соответствующие всем выбранным жанрам;<br />
                        <b>или:</b> отберутся все фильмы хотя бы одного жанра
                    </span>
                    <div class="clr"></div>
                </div>
                <button class="cbtn [category=2] active[/category]" data-id="11">Биография</button>
                <button class="cbtn [category=3] active[/category]" data-id="12">Боевик</button>
                <button class="cbtn [category=4] active[/category]" data-id="13">Вестерн</button>
                <button class="cbtn [category=5] active[/category]" data-id="14">Военный</button>
                <button class="cbtn [category=6] active[/category]" data-id="15">Детектив</button>
                <button class="cbtn [category=7] active[/category]" data-id="16">Детский</button>
                <button class="cbtn [category=8] active[/category]" data-id="17">Документальный</button>
                <button class="cbtn [category=9] active[/category]" data-id="18">Драма</button>
                <button class="cbtn [category=10] active[/category]" data-id="20">Игра</button>
                <button class="cbtn [category=10] active[/category]" data-id="21">Исторический</button>
                <button class="cbtn [category=11] active[/category]" data-id="22">Комедия</button>
                <button class="cbtn [category=11] active[/category]" data-id="23">Короткометражка</button>
                <button class="cbtn [category=12] active[/category]" data-id="24">Криминал</button>
                <button class="cbtn [category=13] active[/category]" data-id="25">Мелодрама</button>
                <button class="cbtn [category=17] active[/category]" data-id="26">Мюзикл</button>
                <button class="cbtn [category=18] active[/category]" data-id="27">Приключения</button>
                <button class="cbtn [category=22] active[/category]" data-id="28">Семейный</button>
                <button class="cbtn [category=23] active[/category]" data-id="6">Спорт</button>
                <button class="cbtn [category=24] active[/category]" data-id="3">Триллер</button>
                <button class="cbtn [category=25] active[/category]" data-id="4">Ужасы</button>
                <button class="cbtn [category=26] active[/category]" data-id="7">Фантастика</button>
                <button class="cbtn [category=14] active[/category]" data-id="31">Фильм-нуар</button>
                <button class="cbtn [category=27] active[/category]" data-id="32">Фэнтези</button>

                <div class="top">Сериалы</div>
                <button class="cbtn [category=19] active[/category]" data-id="35">Русские сериалы</button>
                <button class="cbtn [category=20] active[/category]" data-id="36">Зарубежные сериалы</button>
                <button class="cbtn [category=21] active[/category]" data-id="37">Турецкие сериалы</button>

                <div class="top">Мультфильмы</div>
                <button class="cbtn [category=15] active[/category]" data-id="9">Аниме</button>
                <button class="cbtn [category=16] active[/category]" data-id="10">Мультфильмы</button>

            </div>
            </div>
        <div class="butt yellow">
            <span>Выбрать страны <i class="fa fa-angle-down"></i></span>
            <div class="list" id="xf_country">
                <div class="top">Выберите необходимые страны</div>
                <button class="cbtn">Австралия</button>
                <button class="cbtn">Бразилия</button>
                <button class="cbtn">Великобритания</button>
                <button class="cbtn">Германия</button>
                <button class="cbtn">Дания</button>
                <button class="cbtn">Индия</button>
                <button class="cbtn">Ирландия</button>
                <button class="cbtn">Испания</button>
                <button class="cbtn">Италия</button>
                <button class="cbtn">Канада</button>
                <button class="cbtn">Люксембург</button>
                <button class="cbtn">Нидерланды</button>
                <button class="cbtn">Норвегия</button>
                <button class="cbtn">Польша</button>
                <button class="cbtn">Россия</button>
                <button class="cbtn">Румыния</button>
                <button class="cbtn">СССР</button>
                <button class="cbtn">США</button>
                <button class="cbtn">Украина</button>
                <button class="cbtn">Франция</button>
            </div>
        </div>
        <div class="butt red">
            <span>Подобрать <i class="fa fa-filter"></i></span>
        </div>
        <div class="clr"></div>
    </div>
    А это код из .js в шаблоне, отвечающий за фильтр...

    PHP:
    function move_Fvalue(e,ui0,ui1){
        $(
    e+' .val1').stop().animate({left:$(e+' .ui-slider-handle').eq(0).css('left')},200).htmlui0?ui0:(e=='#xf_kinopoisk'?$( ).slider"values").toFixed(1):$( ).slider"values")) );
        $(
    e+' .val2').stop().animate({left:$(e+' .ui-slider-handle').eq(1).css('left')},200).htmlui1?ui1:(e=='#xf_kinopoisk'?$( ).slider"values").toFixed(1):$( ).slider"values")) );
    }

    $(
    document).ready(function() {
        $( 
    "#xf_year" ).slider({
            
    rangetrue,
            
    min1970,
            
    max2016,
            
    step1,
            
    values: [ 20002015 ],
            
    slide: function( eventui ) {
                
    move_Fvalue('#xf_year',ui.values],ui.values]);
            },
            
    stop: function( eventui ) {
                
    move_Fvalue('#xf_year',ui.values],ui.values]);
                $(
    '#xf_year .ui-slider-handle').each(function(i){
                    
    i++;
                    if($(
    this).hasClass('ui-state-focus')) {
                        $(
    '#xf_year .filter-value').css({'z-index':0});
                        $(
    '#xf_year .val'+i).css({'z-index':1});
                    }
                });
            }
        })
        .
    append('<div class="steps"><span class="s1">'+1970+'</span><span class="s2">'+1982+'</span><span class="s3">'+1993+'</span><span class="s4">'+2005+'</span><span class="s5">'+2016+'</span></div>');
        
    move_Fvalue('#xf_year');
        
        $( 
    "#xf_kinopoisk" ).slider({
            
    rangetrue,
            
    min1,
            
    max10,
            
    step0.1,
            
    values: [ 5.59.2 ],
            
    slide: function( eventui ) {
                
    move_Fvalue('#xf_kinopoisk',ui.values].toFixed(1),ui.values].toFixed(1));
            },
            
    stop: function( eventui ) {
                
    move_Fvalue('#xf_kinopoisk',ui.values].toFixed(1),ui.values].toFixed(1));
                $(
    '#xf_kinopoisk .ui-slider-handle').each(function(i){
                    
    i++;
                    if($(
    this).hasClass('ui-state-focus')) {
                        $(
    '#xf_kinopoisk .filter-value').css({'z-index':0});
                        $(
    '#xf_kinopoisk .val'+i).css({'z-index':1});
                    }
                });
            }
        })
        .
    append('<div class="steps"><span class="s1">'+1.1+'</span><span class="s2">'+3.3+'</span><span class="s3">'+5.5+'</span><span class="s4">'+7.8+'</span><span class="s5">'+9.9+'</span></div>');
        
    move_Fvalue('#xf_kinopoisk');
        
        $(
    '.filter-buttons .masha_index').remove();
        
        $(
    '.filter-buttons .cbtn').click(function(){
            $(
    this).toggleClass('active');
        })
        .
    mouseleave(function(){
            $(
    this).blur();
        });
        
        $(
    '.filter-buttons .butt > span').click(function(){
            list=$(
    this).parent().children('.list');
            if( list.
    css('display')=='none' ) {
                $(
    '.filter-buttons .list').hide();
                $(
    '.filter-buttons .butt > span').removeClass('active');
                $(
    '.filter-buttons .butt .fa').removeClass('fa-rotate-180');
                $(
    this).addClass('active').children('.fa').addClass('fa-rotate-180');
                list.
    show();
                } else {
                $(
    '.filter-buttons .list').hide();
                $(
    '.filter-buttons .butt > span').removeClass('active');
                $(
    '.filter-buttons .butt .fa').removeClass('fa-rotate-180');
            }
        });
        
        $(
    '.filter-buttons .offin #one-genre, .filter-buttons .offin #all-genres').click(function(){
            $(
    '.filter-buttons .offin span').removeClass('active');
            $(
    this).addClass('active');
        });
        
    })
    .
    click(function(e){
        if($(
    '.filter-buttons .butt .active').length==0)
        return;
        
    e=e||window.event;
        var 
    target=e.target||e.srcElement;
        while(
    target)
        {
            if(
    target==$('.filter-buttons').get(0))
            return;
            
    target=target.parentNode;
        }
        $(
    '.filter-buttons .list').hide();
        $(
    '.filter-buttons .butt > span').removeClass('active');
        $(
    '.filter-buttons .butt .fa').removeClass('fa-rotate-180');
    })
    .
    on('click''.filter-buttons .butt.red, #filter-next', function() {
            var 
    genre = [],
            
    xf_country = [],
            
    cstart = $(this).data('cstart');
            if($(
    '#filter-next').length==0) $('#content').prepend('<div class="navigation-button"><a id="filter-next"></a></div>');
            
    nextBtn = $('#filter-next');
            
    0;
            $(
    '#genre-id .cbtn').each(function(){
                if( $(
    this).hasClass('active') ) {
                    
    genre[i] = $(this).data('id');
                    
    i++;
                }
            });
            
    0;
            $(
    '#xf_country .cbtn').each(function(){
                if( $(
    this).hasClass('active') ) {
                    
    xf_country[i] = $(this).html();
                    
    i++;
                }
            });
            if( !
    cstart cstart 0;
            
    xf_year_start = $('#xf_year .val1').html();
            
    xf_year_end = $('#xf_year .val2').html();
            
    xf_kinopoisk_start = $('#xf_kinopoisk .val1').html();
            
    xf_kinopoisk_end = $('#xf_kinopoisk .val2').html();
            
    gf = $('.filter-buttons .offin .active').index();
            
    nextBtn.css({'text-indent':'-9999px','position':'relative','margin':'4px 0 -10px',backgroundColor:'#eee'}).animate({height:3,border:0,width:'100%'},'fast',function(){
            $(
    this).append('<span></span>').children('span').animate({width:'50%'},'slow');
            $.
    get("/engine/ajax/filter.php", {genre:genre,genre_filter:gf,xf_country:xf_country,xf_year_start:xf_year_start,xf_year_end:xf_year_end,xf_kinopoisk_start:xf_kinopoisk_start,xf_kinopoisk_end:xf_kinopoisk_end,cstart:cstart},
            function(
    data){
                
    nextBtn.children('span').animate({width:'100%'},'slow',function(){
                if( 
    cstart ) $('#content').append(data);
                else $(
    '#content').html(data);
                $(
    this).parents('.navigation-button').fadeOut(200,function(){$(this).remove()});
                });
            }
            );
            });
            return 
    false;
        });
        

    $(
    window).resize(function(){
        
    move_Fvalue('#xf_year');
        
    move_Fvalue('#xf_kinopoisk');
    });
    И еще код из filter.php движка

    PHP:
    <?php
        
    /*
            =====================================================
            DataLife Engine - by SoftNews Media Group
            -----------------------------------------------------
            http://dle-news.ru/
            -----------------------------------------------------
            Copyright (c) 2004,2015 SoftNews Media Group
            =====================================================
            Данный код защищен авторскими правами
            =====================================================
            Файл: rating.php
            -----------------------------------------------------
            Назначение: AJAX для рейтинга новостей
            =====================================================
        */
        
        
    @error_reporting E_ALL E_WARNING E_NOTICE );
        @
    ini_set 'display_errors'true );
        @
    ini_set 'html_errors'false );
        @
    ini_set 'error_reporting'E_ALL E_WARNING E_NOTICE );
        
        
    define'DATALIFEENGINE'true );
        
    define'ROOT_DIR'substrdirname(  __FILE__ ), 0, -12 ) );
        
    define'ENGINE_DIR'ROOT_DIR '/engine' );
        
        include 
    ENGINE_DIR '/data/config.php';
        
        
    date_default_timezone_set $config['date_adjust'] );
        
        if( 
    $config['http_home_url'] == "" ) {
            
            
    $config['http_home_url'] = explode"engine/ajax/rating.php"$_SERVER['PHP_SELF'] );
            
    $config['http_home_url'] = reset$config['http_home_url'] );
            
    $config['http_home_url'] = "http://" $_SERVER['HTTP_HOST'] . $config['http_home_url'];
            
        }
        
        require_once 
    ENGINE_DIR '/classes/mysql.php';
        require_once 
    ENGINE_DIR '/data/dbconfig.php';
        require_once 
    ENGINE_DIR '/modules/functions.php';
        
        
    dle_session();
        
        
    $_REQUEST['skin'] = totranslit($_REQUEST['skin'], falsefalse);
        
        if( 
    $_REQUEST['skin'] ) {
            if( @
    is_dirROOT_DIR '/templates/' $_REQUEST['skin'] ) ) {
                
    $config['skin'] = $_REQUEST['skin'];
                } else {
                die( 
    "Hacking attempt!" );
            }
        }
        
        if( 
    $config["lang_" $config['skin']] ) {
            if ( 
    file_existsROOT_DIR '/language/' $config["lang_" $config['skin']] . '/website.lng' ) ) {   
                include_once 
    ROOT_DIR '/language/' $config["lang_" $config['skin']] . '/website.lng';
            } else die(
    "Language file not found");
            } else {
            
            include_once 
    ROOT_DIR '/language/' $config['langs'] . '/website.lng';
            
        }
        
    $config['charset'] = ($lang['charset'] != '') ? $lang['charset'] : $config['charset'];
        
        
    $allow_active_news true;
        
        require_once 
    ENGINE_DIR '/classes/templates.class.php';
        
        
    $tpl = new dle_template();
        
        if ( (
    $config['allow_smartphone'] AND !$_SESSION['mobile_disable'] AND $tpl->smartphone) OR $_SESSION['mobile_enable'] ) {
            
            if ( @
    is_dir ROOT_DIR '/templates/smartphone' ) ) {
                
                
    $config['skin'] = "smartphone";
                
    $smartphone_detected true;
                
                if( 
    $config['allow_comments_wysiwyg'] > $config['allow_comments_wysiwyg'] = 0;
                
            }
            
        }
        
        
    $tpl->dir ROOT_DIR '/templates/' totranslit($config['skin'], falsefalse);
        
        
    $cat_info get_vars"category" );
        
        if( ! 
    is_array$cat_info ) ) {
            
    $cat_info = array ();
            
            
    $db->query"SELECT * FROM " PREFIX "_category ORDER BY posi ASC" );
            while ( 
    $row $db->get_row() ) {
                
                
    $cat_info[$row['id']] = array ();
                
                foreach ( 
    $row as $key => $value ) {
                    
    $cat_info[$row['id']][$key] = stripslashes$value );
                }
                
            }
            
    set_vars"category"$cat_info );
            
    $db->free();
        }
        
        while (list(
    $key$value) = each($_GET)) {
            
            if( 
    $key == 'genre' ) {
                
                if (
    $config['allow_multi_category']) {
                    
                    if( 
    $_GET['genre_filter'] == $where[] = "category regexp '[[:<:]](" implode'|'$value ) . ")[[:>:]]'";
                    
                    else {
                        foreach( 
    $value as $genre ) {
                            
    $genres[] = "category regexp '[[:<:]](".$genre.")[[:>:]]'";
                        }
                        
    $genre implode(" AND "$genres);
                        
    $where[] = '(' .$genre')';
                    }
                    
                } else  
    $where[] = "category = '{$value[0]}'";
                
                } elseif ( 
    substr($key,0,3) == 'xf_' ) {
                
                
    preg_match_all('#xf_(.*)_(.*)#'$key$matchesPREG_SET_ORDER);
                
                if( 
    $matches[0][2] == 'start' OR $matches[0][2] == 'end'  ) {
                    
                    if(
    $matches[0][2]=='start')
                    {
                        
    $where[] = "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, '{$matches[0][1]}|', -1 ) ,  '||', 1 )>$value-0.001";   
                    }
                    else
                    {
                        
    $where[] = "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, '{$matches[0][1]}|', -1 ) ,  '||', 1 )<$value+0.001";
                    }
                    } else {
                    
                    if( 
    count($value) == $where[] = "xfields LIKE '%".substr($key,3)."|%".convert_unicode$value[0], $config['charset']  )."%'";
                    
                    else {
                        
                        foreach(
    $value as $xf){
                            
    $searchLS[] = "xfields LIKE '%".substr($key,3)."|%".convert_unicode$xf$config['charset']  )."%'";
                        }
                        
                        
    $xfs implode(" OR "$searchLS);
                        
    $where[] = '(' .$xfs')';
                        
                    }
                }
            }
            
        }
        
        if( isset(
    $where) ) $where ' AND ' implode' AND '$where );
        
        
    //$where = " AND (xfields LIKE '%kinopoisk|%8.5%' OR xfields LIKE '%kinopoisk|%8.0%')";
        
        
    if( $_GET['cstart'] ) $cstart $_GET['cstart'];
        else 
    $cstart 0;
        
        
    $sql_select "SELECT id, short_story, xfields, title, category, alt_name FROM " PREFIX "_post WHERE approve=1$where ORDER BY date DESC LIMIT $cstart,".$config['news_number'];
        
    $sql_count "SELECT COUNT(*) as count FROM " PREFIX "_post WHERE approve=1$where";
        
        
    $config['news_navigation'] = 0;
        
        include 
    ENGINE_DIR '/modules/show.short.php';
        
        if( 
    $tpl->result['content'] !== '' ) {
            
            if( 
    $config['news_number'] AND $config['news_number'] < $count_all and $news_count $count_all ) {
                
                
    $tpl->load_template'navigation.tpl' );
                
                
    $tpl->set_block"'\[next-link\](.*?)\[/next-link\]'si""<a href=\"#\" id=\"filter-next\" data-cstart=\"$news_count\">\\1</a>" );
                
                
    $tpl->compile'navi' );
                
                
    $tpl->result['content'] .= $tpl->result['navi'];
                
                
    $tpl->clear();
                
            }
            
            } else {
            
            
    $tpl->load_template'info.tpl' );
            
    $tpl->set'{error}'"К сожалению, поиск по сайту не дал никаких результатов. Попробуйте изменить или упростить Ваш запрос." );
            
    $tpl->set'{title}'$lang['all_err_1'] );
            
    $tpl->compile'content' );
            
    $tpl->clear();
            
        }
        
        @
    header"Content-type: text/html; charset=" $config['charset'] );
        echo 
    $tpl->result['content'];
        
    ?>
    Помогите решить проблему...
     
  2. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.205 / 74 / -0
    используй Field Search от гамира или xsort от сандера.
     
  3. TopicStarter Overlay
    Tolstyak87

    Tolstyak87 Бывалый

    Регистрация:
    21 мар 2018
    Сообщения:
    556
    Лучших ответов:
    2
    Рейтинги:
    +60 / 18 / -0
    А этот не реально поправить?
     
  4. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.205 / 74 / -0
    реально, если этими заняться, но насколько помню писали что тот фильтр дырявый, и без патча могут как то навредить сайту некоторые умельцы...
     
  5. TopicStarter Overlay
    Tolstyak87

    Tolstyak87 Бывалый

    Регистрация:
    21 мар 2018
    Сообщения:
    556
    Лучших ответов:
    2
    Рейтинги:
    +60 / 18 / -0
    Так это Field Search от гамира и есть, судя по коду

    Хорошо, сейчас попробую Field Search от гамира
     
    #5 Tolstyak87, 9 апр 2018
    Последнее редактирование модератором: 9 апр 2018
  6. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.205 / 74 / -0
    Нет, это не он, и даже по коду он никак не похож!
     
  7. TopicStarter Overlay
    Tolstyak87

    Tolstyak87 Бывалый

    Регистрация:
    21 мар 2018
    Сообщения:
    556
    Лучших ответов:
    2
    Рейтинги:
    +60 / 18 / -0
    Поставил его, тот же результат....

    Сори, пробовал Smart xfields search engine - фильтр по доп полям на аякс free [dle 10.x-11.x]
    Это тот же самый и он не пашет
     

    Вложения:

    #7 Tolstyak87, 9 апр 2018
    Последнее редактирование модератором: 9 апр 2018
  8. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.205 / 74 / -0
    там даже по скрину можно понять что это тот же самый, в описании в той теме написано что выложенный фильтр вытащен из одного шаблона, просто название шаблона не указано :)
     
  9. Gazarov

    PRO Users

    Регистрация:
    11 окт 2017
    Сообщения:
    362
    Лучших ответов:
    1
    Рейтинги:
    +55 / 16 / -0
  10. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.205 / 74 / -0
  11. TopicStarter Overlay
    Tolstyak87

    Tolstyak87 Бывалый

    Регистрация:
    21 мар 2018
    Сообщения:
    556
    Лучших ответов:
    2
    Рейтинги:
    +60 / 18 / -0
    Спасибо, работает, толькодонастроить нужно:p
     
  12. Gazarov

    PRO Users

    Регистрация:
    11 окт 2017
    Сообщения:
    362
    Лучших ответов:
    1
    Рейтинги:
    +55 / 16 / -0
    Пусть служит ;)
    Привык не ставит нуллы и рипики, дабы не обижать Сандера, т.к. работал с ним не раз, отличный парень, старается же :D
     
    • Согласен Согласен x 1
  13. TopicStarter Overlay
    Tolstyak87

    Tolstyak87 Бывалый

    Регистрация:
    21 мар 2018
    Сообщения:
    556
    Лучших ответов:
    2
    Рейтинги:
    +60 / 18 / -0
     
Похожие темы
  1. axe2009
    Ответов:
    6
    Просмотров:
    1.144
  2. Dr_Brown
    Ответов:
    7
    Просмотров:
    1.088
  3. natrium74
    Ответов:
    1
    Просмотров:
    769
  4. Winston?!
    Ответов:
    39
    Просмотров:
    1.360
  5. soccerforecast
    Ответов:
    7
    Просмотров:
    424
Загрузка...
Яндекс.Метрика