|
net.master
zmot.kz
Зарегистрирован: 2014-12-02
Сообщений: 17
|
Делаю свой поиск по каталогу товаров, создал для этого компонент и отправил данные в него get запросом. Но ни одна функция в системных настройках компонента эти данные обрабатывать не хочет (даже такие элементарные, как обрезка полей mb_substr(...)). Просто выходит белый лист без какого-либо сообщения об ошибке. Данные перед этим обрабатываю функцией $nc_core->input->fetch_get( 'search_q' ). Какие упущения я мог допустить?
Вот код из системных настроек компонента:
<?php
if (!nc_module_check_by_keyword("netshop")) {
die (NETCAT_MODULE_NETSHOP_MODULEUNCHECKED);
}
$nc_core = nc_Core::get_object();
//$netshop = nc_netshop::get_instance();
$_SESSION['search_query_string'] = $nc_core->input->fetch_get( 'search_q' ) ? '' : $_SESSION['search_query_string'];
$_SESSION['search_sub'] = (int)$nc_core->input->fetch_get( 'sub' ) ? (int)$nc_core->input->fetch_get( 'sub' ) : '';
if(!$_SESSION['search_query_string'] && $nc_core->input->fetch_get( 'search_q' )) {
$filter_wds['ru'] = array(' из ',' под ',' над ',' и ',' к ',' в ',' если ',
' то ','только',' не ',' у ',' до ',' на ',' от ', ' по ', ' для ',' через ',' после ',
' около ',' вместе ',' с ',' чтобы ', ' но ', ' как ');
$filter_wds['en'] = array(' at ',' the ',' a ',' an ',' in ',' with ',' just ',' but ',
' before ',' then ',' if ',' else ',' by ',' that ',' should ',' would ',' through ',' them ',' this ',
' who ',' also ');
$filter_string = str_replace($filter_wds[$_SESSION['LANG']], ' ', $nc_core->input->fetch_get( 'search_q' ));
$filter_string = preg_replace('/[^a-zа-я \d-]+/ui', '', $filter_string);
$filter_string = $nc_core->db->escape(strip_tags($filter_string));
$array_string = explode(" ", $filter_string);
$q="";
foreach($array_string as $arr) {
if(mb_strlen($arr,'utf-8')>=2) {
$q .= " a.`Name` LIKE '%".mb_strtolower($arr,'utf-8')."%' OR";
$q .= " a.`Name` LIKE '%".mb_ucfirst($arr,'utf-8')."%' OR";
$q .= " a.`Name` LIKE '%".mb_strtoupper($arr)."%' OR";
$q .= " a.`Description LIKE '%".mb_strtolower($arr,'utf-8')."%' OR";
$q .= " a.`Description LIKE '%".mb_ucfirst($arr,'utf-8')."%' OR";
$q .= " a.`Description LIKE '%".mb_strtoupper($arr)."%' OR";
}
}
$_SESSION['search_query_string'] = trim($q, 'OR');
}
$ignore_all = 1;
$query_select ="a.*, cur.`ShopCurrency_Name` as CurName, sc.`Class_ID`";
$query_from = "`Message".C_GOODS."` as a";
$query_join = "
LEFT JOIN `Classificator_ShopCurrency` as cur ON cur.`ShopCurrency_ID` = a.`Currency`
LEFT JOIN `Sub_Class` as sc ON sc.`Sub_Class_ID` = a.`Sub_Class_ID`";
$query_where = "a.`Checked` = '1' AND a.`Archived` = 0 ".($_SESSION['search_sub']
? " AND a.`Subdivision_ID` = '".(int)$_SESSION['search_sub']."' ": '' ).
($_SESSION['search_query_string']? " AND (".$_SESSION['search_query_string'].")" : '');
$query_order = $cc_env['SortBy']?$cc_env['SortBy']:"a.`Created` DESC";
$pp = $cc_env['RecordsPerPage'] ? $cc_env['RecordsPerPage'] : "20";
$from = $nc_page?ceil(($nc_page*$pp)-$pp):0;
$query_limit = "$from, $pp";
В эрор логе никаких данных по этому запросу не нашел
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Какая версия Netcat?
Если 5.х, то попробуйте в префиксе списка объектов поставить:
<?=$message_select?>
- и увидите SQL-запрос, который готовит система.
Если так и останется "белый лист" - тогда, вероятно, вам надо включить вывод ошибок на экран - добавьте в системные настройки компонента (в самое начало), например, такие строчки:
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'On');
ini_set('display_warnings', 'On');
|