Доброго времени суток уважаемые форумчане. Столкнулся с такой проблеммой: в шаблоне моего сайта есть фильтр для отображения новостей для посетителей, никак не могу разобраться, как его настроить и подкоректировать, чтоб работал. Что бы я ни пробовал - выдает ошибку.
Ниже приведен код из файла фильтра (filter.tpl)......
А это код из .js в шаблоне, отвечающий за фильтр...
И еще код из filter.php движка
Помогите решить проблему...
Ниже приведен код из файла фильтра (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).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: 2016,
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');
});
И еще код из 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', substr( dirname( __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'], false, false);
if( $_REQUEST['skin'] ) {
if( @is_dir( ROOT_DIR . '/templates/' . $_REQUEST['skin'] ) ) {
$config['skin'] = $_REQUEST['skin'];
} else {
die( "Hacking attempt!" );
}
}
if( $config["lang_" . $config['skin']] ) {
if ( file_exists( ROOT_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'] > 0 ) $config['allow_comments_wysiwyg'] = 0;
}
}
$tpl->dir = ROOT_DIR . '/templates/' . totranslit($config['skin'], false, false);
$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'] == 1 ) $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, $matches, PREG_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) == 1 ) $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'];
?>
Помогите решить проблему...