
Привет Друзья! У меня к вам вопрос как сделать поиск только по статьям и убрать расширенный поиск? Что отсюда лишнее нужно вырезать?
Показать / Скрыть текст
" ); $goodquotes = array ("#", "'", '"' ); $repquotes = array ("#", "'", '"' ); $text = stripslashes( $text ); $text = trim( strip_tags( $text ) ); $text = str_replace( $quotes, '', $text ); $text = str_replace( $goodquotes, $repquotes, $text ); return $text; } $count_result = 0; $sql_count = ""; $sql_find = ""; // Минимальное количество символов в слове поиска $config['search_length_min'] = 4; $tpl->load_template( 'search.tpl' ); $config['search_number'] = intval($config['search_number']); if ( $config['search_number'] < 1) $config['search_number'] = 1; $this_date = date( "Y-m-d H:i:s", $_TIME ); if( $config['no_date'] AND !$config['news_future'] ) $this_date = " AND " . PREFIX . "_post.date < '" . $this_date . "'"; else $this_date = ""; if( isset( $_REQUEST['story'] ) ) $story = dle_substr( strip_data( rawurldecode( $_REQUEST['story'] ) ), 0, 90, $config['charset'] ); else $story = ""; if( isset( $_REQUEST['search_start'] ) ) $search_start = intval( $_REQUEST['search_start'] ); else $search_start = 0; if( isset( $_REQUEST['titleonly'] ) ) $titleonly = intval( $_REQUEST['titleonly'] ); else $titleonly = 0; if( isset( $_REQUEST['searchuser'] ) ) $searchuser = dle_substr( $_REQUEST['searchuser'], 0, 40, $config['charset'] ); else $searchuser = ""; if( isset( $_REQUEST['exactname'] ) ) $exactname = $_REQUEST['exactname']; else $exactname = ""; if( isset( $_REQUEST['all_word_seach'] ) ) $all_word_seach = intval($_REQUEST['all_word_seach']); else $all_word_seach = 0; if( isset( $_REQUEST['replyless'] ) ) $replyless = intval( $_REQUEST['replyless'] ); else $replyless = 0; if( isset( $_REQUEST['replylimit'] ) ) $replylimit = intval( $_REQUEST['replylimit'] ); else $replylimit = 0; if( isset( $_REQUEST['searchdate'] ) ) $searchdate = intval( $_REQUEST['searchdate'] ); else $searchdate = 0; if( isset( $_REQUEST['beforeafter'] ) ) $beforeafter = htmlspecialchars( $_REQUEST['beforeafter'], ENT_QUOTES, $config['charset'] ); else $beforeafter = "after"; if( preg_match( "/[||'|<|>|"|!|?|$|@|/||&~*+]/", $searchuser ) ) $searchuser=""; if ($config['full_search']) { if( isset( $_REQUEST['sortby'] ) ) $sortby = htmlspecialchars( $_REQUEST['sortby'], ENT_QUOTES, $config['charset'] ); else $sortby = ""; } else { if( isset( $_REQUEST['sortby'] ) ) $sortby = htmlspecialchars( $_REQUEST['sortby'], ENT_QUOTES, $config['charset'] ); else $sortby = "date"; } if( isset( $_REQUEST['resorder'] ) ) $resorder = htmlspecialchars( $_REQUEST['resorder'], ENT_QUOTES, $config['charset'] ); else $resorder = "desc"; if( isset( $_REQUEST['showposts'] ) ) $showposts = intval( $_REQUEST['showposts'] ); else $showposts = 0; if( isset( $_REQUEST['result_from'] ) ) $result_from = intval( $_REQUEST['result_from'] ); else $result_from = 1; // Показать страницу с результатом № ХХХ $full_search = intval( $_REQUEST['full_search'] ); if( !count( $_REQUEST['catlist'] ) ) { $catlist = array (); $catlist[] = '0'; } else $catlist = $_REQUEST['catlist']; $category_list = array(); foreach ( $catlist as $value ) { $category_list[] = intval($value); } $category_list = $db->safesql( implode( ',', $category_list ) ); if( function_exists( "get_magic_quotes_gpc" ) && get_magic_quotes_gpc() ) $story = stripslashes( $story ); $findstory = stripslashes($story); // Для вывода в поле поиска $findstory = htmlspecialchars($findstory, ENT_QUOTES, $config['charset']); $story = addslashes( $story ); if ($titleonly == 2 AND !empty( $searchuser ) ) $searchuser = ""; if( empty( $story ) AND !empty( $searchuser ) AND $titleonly != 2) $story = "___SEARCH___ALL___"; // Для поиска всех статей if( $search_start < 0 ) $search_start = 0; // Начальная страница поиска if( $titleonly < 0 or $titleonly > 3 ) $titleonly = 0; // Искать в заголовках, статьях, комментариях if( $replyless < 0 or $replyless > 1 ) $replyless = 0; // Искать больше или меньше ответов if( $replylimit < 0 ) $replylimit = 0; // Лимит ответов if( $showposts < 0 or $showposts > 1 ) $showposts = 0; // Искать в статьях или комментариях юзера $listdate = array (0, - 1, 1, 7, 14, 30, 90, 180, 365 ); // Искать за период ХХХ дней if( ! (in_array( $searchdate, $listdate )) ) $searchdate = 0; if( $beforeafter != "after" and $beforeafter != "before" ) $beforeafter = "after"; // Искать до или после периода дней $listsortby = array ("date", "title", "comm_num", "news_read", "autor", "category", "rating" ); if ($config['full_search']) { if( ! (in_array( $sortby, $listsortby )) ) $sortby = ""; // Сортировать по полям } else { if( ! (in_array( $sortby, $listsortby )) ) $sortby = "date"; // Сортировать по полям } $listresorder = array ("desc", "asc" ); if( ! (in_array( $resorder, $listresorder )) ) $resorder = "desc"; // Сортировать по возрастающей или убывающей // Определение выбранных ранее опций, переданных в форме $titleonly_sel = array ('0' => '', '1' => '', '2' => '', '3' => '' ); $titleonly_sel[$titleonly] = 'selected="selected"'; $replyless_sel = array ('0' => '', '1' => '' ); $replyless_sel[$replyless] = 'selected="selected"'; $searchdate_sel = array ('0' => '', '-1' => '', '1' => '', '7' => '', '14' => '', '30' => '', '90' => '', '180' => '', '365' => '' ); $searchdate_sel[$searchdate] = 'selected="selected"'; $beforeafter_sel = array ('after' => '', 'before' => '' ); $beforeafter_sel[$beforeafter] = 'selected="selected"'; $sortby_sel = array ('date' => '', 'title' => '', 'comm_num' => '', 'news_read' => '', 'autor' => '', 'category' => '', 'rating' => '' ); $sortby_sel[$sortby] = 'selected="selected"'; $resorder_sel = array ('desc' => '', 'asc' => '' ); $resorder_sel[$resorder] = 'selected="selected"'; $showposts_sel = array ('0' => '', '1' => '' ); $showposts_sel[$showposts] = 'checked="checked"'; if( $exactname == "yes" ) $exactname_sel = 'checked="checked"'; else $exactname_sel = ''; if( $all_word_seach == 1 ) $all_word_seach_sel = 'checked="checked"'; else $all_word_seach_sel = ''; // Вывод формы поиска if( $category_list == "" or $category_list == "0" ) { $catselall = "selected="selected""; } else { $catselall = ""; $category_list = preg_replace( "/^0,/", '', $category_list ); } // Определение и вывод доступных категорий $cats = ""; $tpl->copy_template .= << HTML; $searchtable = <<
HTML; if( $full_search ) { if ($config['full_search']) { $full_search_option = "{$lang['s_fsrelate']}{$lang['s_fsdate']}"; $all_word_option = ""; } else { $full_search_option = "{$lang['s_fsdate']}"; $all_word_option = "
{$lang['s_fword']}
"; } $searchtable .= <<
{$lang['s_con']}
{$lang['s_word']}
{$all_word_option}
{$lang['s_mname']}
{$lang['s_fname']}
{$lang['s_fgname']}
{$lang['s_fart']}
{$lang['s_wcomm']}
{$lang['s_fdaten']}
{$lang['s_fsoft']}
{$lang['s_vlegend']}
{$lang['s_vwie']} {$lang['s_vnews']} {$lang['s_vtitle']}
{$lang['s_fcats']}
$cats
HTML; } else { if ( $smartphone_detected ) { $link_full_search = ""; } else { $link_full_search = ""; } $searchtable .= <<
HTML; } $searchtable .= <<
HTML; $tpl->set( '{searchtable}', $searchtable ); // По умолчанию, выводится только форма поиска if( $subaction != "search" ) { $tpl->set_block( "'[searchmsg](.*?)[/searchmsg]'si", "" ); $tpl->compile( 'content' ); } // Конец вывода формы поиска if( $subaction == "search" ) { // Вывод результатов поиска if ($config['full_search']) { $arr = explode( ' ', $story ); $story_maxlen = 0; $story = array (); foreach ( $arr as $word ) { $wordlen = dle_strlen( trim( $word ), $config['charset'] ); if( $wordlen >= $config['search_length_min'] ) $story[] = $word; if( $wordlen > $story_maxlen ) { $story_maxlen = $wordlen; } } $story = implode( " ", $story ); } else { if ( !$all_word_seach ) $story = preg_replace( "#(s+|__OR__)#i", '%', $story ); $story_maxlen = dle_strlen( trim( $story ), $config['charset'] ); } if( (empty( $story ) or ($story_maxlen < $config['search_length_min'])) and (empty( $searchuser ) or (strlen( $searchuser ) < $config['search_length_min'])) ) { msgbox( $lang['all_info'], $lang['search_err_3'] ); $tpl->set( '{searchmsg}', '' ); $tpl->set_block( "'[searchmsg](.*?)[/searchmsg]'si", "" ); $tpl->compile( 'content' ); } else { // Начало подготовки поиска if( $search_start ) { $search_start = $search_start - 1; $search_start = $search_start * $config['search_number']; } // Проверка разрешенных категорий из списка выбранных категорий $allow_cats = $user_group[$member_id['user_group']]['allow_cats']; $allow_list = explode( ',', $allow_cats ); $stop_list = ""; if( $allow_list[0] == "all" ) { // Все категории доступны для группы if( $category_list == "" or $category_list == "0" ) { // Выбран поиск по всем категориям ; } else { // Выбран поиск по некоторым категориям $stop_list = str_replace( ',', '|', $category_list ); } } else { // Не все категории доступны для группы if( $category_list == "" or $category_list == "0" ) { // Выбран поиск по всем категориям $stop_list = str_replace( ',', '|', $allow_cats ); } else { // Выбран поиск по некоторым категориям $cats_list = explode( ',', $category_list ); foreach ( $cats_list as $id ) { if( in_array( $id, $allow_list ) ) $stop_list .= $id . '|'; } $stop_list = substr( $stop_list, 0, strlen( $stop_list ) - 1 ); } } // Ограничение по категориям $where_category = ""; if( ! empty( $stop_list ) ) { if( $config['allow_multi_category'] ) { $where_category = "category regexp '[[:<:]](" . $stop_list . ")[[:>:]]'"; } else { $stop_list = str_replace( "|", "','", $stop_list ); $where_category = "category IN ('" . $stop_list . "')"; } } if( $story == "___SEARCH___ALL___" ) $story = ''; $thistime = date( "Y-m-d H:i:s", (time() + $config['date_adjust'] * 60) ); if( $exactname == 'yes' ) $likename = ''; else $likename = '%'; if( $searchdate != '0' ) { if( $searchdate != '-1' ) { $qdate = date( "Y-m-d H:i:s", (time() + $config['date_adjust'] * 60 - $searchdate * 86400) ); } else { if( $is_logged and isset( $_SESSION['member_lasttime'] ) ) $qdate = date( "Y-m-d H:i:s", $_SESSION['member_lasttime'] ); else $qdate = $thistime; } } // Поиск по автору статьи или комментария &nbs
Источник: dle-faq.pro
Источник: darklord4722
Другие материалы на сайте b.Z - Записки о гаджетах, людях и музыке