В прошлой статье я рассказал Вам о решении проблемы с добавлением полей страна, регион и город в профиль в движок 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>
Все! Найти участников теперь можно по стране, региону и городу проживания.
Скачать статью в формате word (.doc)
Вы ожидали больше шагов? Извините, что все так просто. Если у Вас возникнут вопросы, пишите, разберемся.
Автор: Евтеев Евгений Александрович