Добавление полей страна, регион и город в расширенный поиск в SocialEngine Excalibur
2009
В прошлой статье я рассказал Вам о решении проблемы с добавлением полей страна, регион и город в профиль в движок SocialEngine Excalibur, сегодня мы добавим эти поля в расширенный поиск – это тоже немало важный апгрейд. Написание этой статьи меня подтолкнул вопрос, зачем нужны поля страна, регион и город в профиле участника, если нет возможности найти участников, используя данные поля?
Для добавления данных полей необходимо выполнить пару шагов:
- Открыть: search_advanced.php
Найти
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.$search_query = "SELECT se_users.user_id, se_users.user_username, se_users.user_fname, se_users.user_lname, se_users.user_photo FROM se_profilevalues LEFT JOIN se_users ON se_profilevalues.profilevalue_user_id=se_users.user_id LEFT JOIN se_levels ON se_levels.level_id=se_users.user_level_id WHERE se_users.user_profilecat_id='{$cat_selected}' AND se_users.user_verified='1' AND se_users.user_enabled='1' AND (se_users.user_search='1' OR se_levels.level_profile_search='0')";
if($user_online == 1) { $search_query .= " AND user_lastactive>'".(time()-10*60)."' AND user_invisible=0"; }
if($user_withphoto == 1) { $search_query .= " AND user_photo <> ''"; }
if($field->field_query != "") { $search_query .= " AND ".$field->field_query; }Заменить
Подсказка: Произведите замену ранее найденных строк.$search_query = "SELECT se_users.user_id, se_users.user_username, se_users.user_fname, se_users.user_lname, se_users.user_photo FROM se_profilevalues LEFT JOIN se_users ON se_profilevalues.profilevalue_user_id=se_users.user_id LEFT JOIN se_levels ON se_levels.level_id=se_users.user_level_id LEFT JOIN cites_profilevalues ON se_profilevalues.profilevalue_user_id=cites_profilevalues.profilevalue_id WHERE se_users.user_profilecat_id='{$cat_selected}' AND se_users.user_verified='1' AND se_users.user_enabled='1' AND (se_users.user_search='1' OR se_levels.level_profile_search='0')";
if($user_online == 1) { $search_query .= " AND user_lastactive>'".(time()-10*60)."' AND user_invisible=0"; }
if($user_withphoto == 1) { $search_query .= " AND user_photo <> ''"; }
if($field->field_query != "") { $search_query .= " AND se_profilevalues.".$field->field_query; }
if(isset($_POST['dhtmlgoodies_country']) && $_POST['dhtmlgoodies_country'] > 0)
$search_query .= " AND cites_profilevalues.profilevalue_7 = '" . $_POST['dhtmlgoodies_country'] . "'";
if(isset($_POST['dhtmlgoodies_region']) && $_POST['dhtmlgoodies_region'] > 0)
$search_query .= " AND cites_profilevalues.profilevalue_8 = '" . $_POST['dhtmlgoodies_region'] . "'";
if(isset($_POST['dhtmlgoodies_city']) && $_POST['dhtmlgoodies_city'] > 0)
$search_query .= " AND cites_profilevalues.profilevalue_9 = '" . $_POST['dhtmlgoodies_city'] . "'";Найти
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.// SET GLOBAL PAGE TITLE
$global_page_title[0] = 926;
$global_page_description[0] = 1088;
}Добавить после
Подсказка: Добавьте эти строки на новой строке после ранее найденных строк.// GET COUNTRY, REGION AND CITY
$sql = $database->database_query ("SELECT * FROM country");
while ($country_bd = $database->database_fetch_assoc ($sql))
{
if(isset($_POST['dhtmlgoodies_country']) && $country_bd[country_id] == $_POST['dhtmlgoodies_country'])
$country_sel = " SELECTED";
else
$country_sel = "";$country .= «<option value=’» . $country_bd[country_id] . «‘» . $country_sel . «>» . $country_bd[name] . «</option>\n»;
}if(isset($_POST['dhtmlgoodies_region']))
{
$region_tb = $database->database_fetch_assoc($database->database_query(«SELECT region_id, name FROM region WHERE region_id=’».$_POST['dhtmlgoodies_region'].»‘ LIMIT 1″));
if(strlen($region_tb[name]) > 1)
$region .= «<option value=’» . $region_tb[region_id] . «‘ SELECTED>» . $region_tb[name] . «</option>\n»;
}if(isset($_POST['dhtmlgoodies_city']))
{
$city_tb = $database->database_fetch_assoc($database->database_query(«SELECT city_id, name FROM city WHERE city_id=’».$_POST['dhtmlgoodies_city'].»‘ LIMIT 1″));
if(strlen($city_tb[name]) > 1)
$city .= «<option value=’» . $city_tb[city_id] . «‘ SELECTED>» . $city_tb[name] . «</option>\n»;
}
$smarty->assign(‘country’, $country);
$smarty->assign(‘region’, $region);
$smarty->assign(‘city’, $city);
// END GET COUNTRY, REGION AND CITY - Открыть: search_advanced.tpl
Найти</div>
{/section}
{/section}
{/section}Добавить после
Подсказка: Добавьте эти строки на новой строке после ранее найденных строк.<table cellpadding='0' cellspacing='0' style='padding-top: 5px;'>
<tr><td>
<div style='font-weight: bold; margin-top: 5px;'>Страна проживания</div>
<select name='dhtmlgoodies_country' id='dhtmlgoodies_country' onchange="getRegionList(this.value);">
<option id='op' value='-1'>[ Страна ]</option>
{$country}</select>
</div>
<div style='font-weight: bold; margin-top: 5px;'>Регион проживания</div>
<select name='dhtmlgoodies_region' id='dhtmlgoodies_region' onchange="getCityList(this.value);">
<option id='op' value='-1'>[ Регион ]</option>
{$region}</select>
</div>
<div style='font-weight: bold; margin-top: 5px;'>Город проживания</div>
<select name='dhtmlgoodies_city' id='dhtmlgoodies_city'>
<option id='op' value='-1'>[ Город ]</option>
{$city}</select>
</div>
</td></tr>
</table>
Все! Найти участников теперь можно по стране, региону и городу проживания.
Вы ожидали больше шагов? Извините, что все так просто. Если у Вас возникнут вопросы, пишите мне на мыло, разберемся.
Автор: Евтеев Евгений Александрович
Email: evteev_e2003@mail.ru