Не знаю, нужно ли эту функцию добавлять в cms и в таком виде, поэтому решил тут спросить. Up: отправил коммит, добавляющий фичу в cms
Автодополнение сделано просто: в html5 есть тег <datalist>, который добавляет список вариантов под полем ввода. Все БРАУЗЕРЫ этот тег уже понимают.
А варианты добавляются аяксом в блок datalist.
Есть фильтрация htmlspecialchars и отключение показа своего же ника.
Установка:
В modules/users/index.php перед последней фигурной скобкой добавить:
Code:
public function search_niks()
{
if (empty($_GET['name'])) return;
$sql = "(SELECT * FROM `users` WHERE `name` LIKE '%".htmlspecialchars($_GET['name'])."%' ";
if (isset($_SESSION['user'])) {
$sql .= "AND `name` NOT LIKE '".$_SESSION['user']['name']."' ";
}
$sql .= "LIMIT 10)";
$users = $this->DB->query($sql);
if ($users) {
foreach ($users as $user) {
print '<option value="'.$user['name'].'">';
}
}
}
В template/шаблон/html/users/sendmessageform.html
инпуту, в котором вводится имя получателя, дописать list="findusers"
под инпутом добавить:
А чем собственно эта функция может помешать? Она улучшит CMS и только. Надо еще для поиска такую штуку. И если вы думаете , что она кому то помешает, можно сделать кнопку вкл/выкл в админке.
Врядли может помешать, просто хочется как можно меньше засорять движок, хочется там оставить только всё самое необходимое, а всякие рюшечки отделить от системного кода.
Хотя модули это не система, а этот код мало места занимает то наверное можно добавить.
Если поиск то что там выводить? Не совсем представляю. Если сразу искать материалы по запросу то выбрав определённый вариант хорошо бы сразу пересылать на страницу с этим материалом, ведь наверняка такое название будет единственным.
Если популярные запросы то так просто нельзя сделать, сейчас запросы в поиске нигде не сохраняются
Сашка_из_Шебекино,
1) добавь ограничение, чтобы строка поиска была не менее 3 символов, чтобы снизить нагрузки на БД;
2) передавать имя лучше в GET, поскольку возможны проблемы с русскоязычными именами;
3) название функции стоило бы укоротить.
Возможно стоило бы как-то кешировать список пользователей, чтобы не дергать БД каждый раз.