• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Оптимизировать Smart Xfields Search Engine под dle 12?

usergeyv

Знаток
Регистрация
5 Июл 2013
Сообщения
152
Реакции
25
Не пойму в чем проблема , на версиях Dle 10/x Dle 11/x работает , скрин
Для просмотра ссылки Войди или Зарегистрируйся

на Dle 12 выше , ползунки исчезают, кнопки, кроме Подобрать, не работают, тестил на разных шаблонах, Скрин
Для просмотра ссылки Войди или Зарегистрируйся

Вот filter.js
HTML:
/*! Smart Xfields Search Engine
* Подготовил для вас: DomiTori
* http://dle.press
* Заходите в мой блог о DLE, там выложены полезные мелочи */

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

$(document).ready(function() {
    $( "#xf_year" ).slider({
        range: true,
        min: 1970,
        max: 2017,
        step: 1,
        values: [ 2000, 2015 ],
        slide: function( event, ui ) {
            move_Fvalue('#xf_year',ui.values[ 0 ],ui.values[ 1 ]);
        },
        stop: function( event, ui ) {
            move_Fvalue('#xf_year',ui.values[ 0 ],ui.values[ 1 ]);
            $('#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({
        range: true,
        min: 1,
        max: 10,
        step: 0.1,
        values: [ 5.5, 9.2 ],
        slide: function( event, ui ) {
            move_Fvalue('#xf_kinopoisk',ui.values[ 0 ].toFixed(1),ui.values[ 1 ].toFixed(1));
        },
        stop: function( event, ui ) {
            move_Fvalue('#xf_kinopoisk',ui.values[ 0 ].toFixed(1),ui.values[ 1 ].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');
        i = 0;
        $('#genre-id .cbtn').each(function(){
            if( $(this).hasClass('active') ) {
                genre[i] = $(this).data('id');
                i++;
            }
        });
        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 > 0 ) $('#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');
});


Вот полный архив с хаком
 

Вложения

  • smart-xfields-search-engine.zip
    15,5 KB · Просмотры: 6
В модуле дыры, это ничего?
 
Всё IT в одной фразе...
Достаточно произвести эти действия, чтобы закрыть их. Для защиты данных сделайте правки в /engine/ajax/filter.php

$where[] = "category regexp '[[:<:]](" . implode( '|', $value ) . ")[[:>:]]'";

Заменить на

$where[] = "category regexp '[[:<:]](" . $db->safesql(strip_tags(stripslashes(implode( '|', $value )))) . ")[[:>:]]'";

Найти :

$genres[] = "category regexp '[[:<:]](".$genre.")[[:>:]]'";

Заменить на :

$genres[] = "category IN (".intval($genre).")";

Далее найти :

$searchLS[] = "xfields LIKE '%".substr($key,3)."|%".convert_unicode( $xf, $config['charset'] )."%'";

Выше вставить :

$key = $db->safesql(strip_tags(stripslashes($key)));
$xf = $db->safesql(strip_tags(stripslashes($xf)));

Далее найти :

if( $matches[0][2] == 'start' OR $matches[0][2] == 'end' ) {

Ниже вставить :

$value = intval($value);

Далее найти :

if( count($value) == 1 ) $where[] = "xfields LIKE '%".substr($key,3)."|%".convert_unicode( $value[0], $config['charset'] )."%'";

Заменить на :

if( count($value) == 1 )
{
$key = $db->safesql(strip_tags(stripslashes($key)));
$value[0] = $db->safesql(strip_tags(stripslashes($value[0])));
$where[] = "xfields LIKE '%".substr($key,3)."|%".convert_unicode( $value[0], $config['charset'] )."%'";
}

Далее найти :

$cstart = $_GET['cstart'];

Заменить на :

$cstart = intval($_GET['cstart']);


На этом всё.
потому и надо, что бы работал на 12 версии
 
Достаточно произвести эти действия, чтобы закрыть их. Для защиты данных сделайте правки в /engine/ajax/filter.php

$where[] = "category regexp '[[:<:]](" . implode( '|', $value ) . ")[[:>:]]'";

Заменить на

$where[] = "category regexp '[[:<:]](" . $db->safesql(strip_tags(stripslashes(implode( '|', $value )))) . ")[[:>:]]'";

Найти :

$genres[] = "category regexp '[[:<:]](".$genre.")[[:>:]]'";

Заменить на :

$genres[] = "category IN (".intval($genre).")";

Далее найти :

$searchLS[] = "xfields LIKE '%".substr($key,3)."|%".convert_unicode( $xf, $config['charset'] )."%'";

Выше вставить :

$key = $db->safesql(strip_tags(stripslashes($key)));
$xf = $db->safesql(strip_tags(stripslashes($xf)));

Далее найти :

if( $matches[0][2] == 'start' OR $matches[0][2] == 'end' ) {

Ниже вставить :

$value = intval($value);

Далее найти :

if( count($value) == 1 ) $where[] = "xfields LIKE '%".substr($key,3)."|%".convert_unicode( $value[0], $config['charset'] )."%'";

Заменить на :

if( count($value) == 1 )
{
$key = $db->safesql(strip_tags(stripslashes($key)));
$value[0] = $db->safesql(strip_tags(stripslashes($value[0])));
$where[] = "xfields LIKE '%".substr($key,3)."|%".convert_unicode( $value[0], $config['charset'] )."%'";
}

Далее найти :

$cstart = $_GET['cstart'];

Заменить на :

$cstart = intval($_GET['cstart']);


На этом всё.
потому и надо, что бы работал на 12 версии
Ну это мои правки. Автора бы указали.
 
Ну это мои правки. Автора бы указали.
Я как бы не в курсе, спасибо за правки конечно, взял от сюда, там автора нет:
Код:
http://www.dle9.com/moduli/besplatnye-moduli/4607-modul-dlya-dle-smart-xfields-search-engine.html
а, нет, автор есть - DomiTori и Nik_Dev
 
Я как бы не в курсе, спасибо за правки конечно, взял от сюда, там автора нет:
Код:
http://www.dle9.com/moduli/besplatnye-moduli/4607-modul-dlya-dle-smart-xfields-search-engine.html
а, нет, автор есть - DomiTori и Nik_Dev
Это фильтра. Правки написал я.
 
Назад
Сверху