Продолжение от "Улучшаем поиск №1"
На этот раз сделаем поиск по категориям!
Перво наперво создадим форму поиска в шаблоне...
1. Открываем шаблон main.tpl и находим форму поиска:
начинается она так:
в неё добавляем код меню выбора категорий (под дизайн подбираем сами): <select name=search_category> {search_categories} </select>
2. открываем index.php и после:
$tpl->set('/templates/Simple', $config_http_home_url.'templates/'.$config_skin); добавляем:
$tpl->set('{search_categories}', CategoryNewsSelection());
ps: эта строка создаёт дополнительно по одному запросу на каждую категорию!
3. открываем /engine/modules/search.php (уже изменённый)
находим:
$sql_find
= "select id, date, short_story, xfields, title, autor, comm_num,
alt_name from " . PREFIX . "_post where (short_story like '%$story%' or
title like '%$story%' or full_story like '%$story%' or xfields like
'%$story%') AND approve = '1' AND date < '$thisdate' order by
".$config_news_sort." ".$config_news_msort." LIMIT 0,40"; и заменяем на:
$search_category = intval(mysql_escape_string($_POST['search_category'])); if (trim($search_category) != "") { $sql_find
= "select id, date, short_story, xfields, title, autor, comm_num,
alt_name from " . PREFIX . "_post where category = '$search_category'
AND (short_story like '%$story%' or title like '%$story%' or full_story
like '%$story%' or xfields like '%$story%') AND approve = '1' AND date
< '$thisdate' order by ".$config_news_sort." ".$config_news_msort."
LIMIT 0,40"; } else { $sql_find = "select id, date,
short_story, xfields, title, autor, comm_num, alt_name from " . PREFIX
. "_post where (short_story like '%$story%' or title like '%$story%' or
full_story like '%$story%' or xfields like '%$story%') AND approve =
'1' AND date < '$thisdate' order by ".$config_news_sort."
".$config_news_msort." LIMIT 0,40"; };
© nickon
PS: Напомню что хак пердназначен для 3.5 версии
Позже я раскажу как сделать выбор категорий без запросов!
|