- Создание формы поиска на сайте. Почему не выводится результат поиска при вводе символов в поле поиска?
- Как сделать форму поиска рабочей?
- Не работает поиск html
- Поиск по сайту не ищет текст внутри html модулей вставленных в материал — Joomla 3.x: Общие вопросы
- Joomla 5: плагин обратной совместимости
- Перенос материалов из компонента K2 в стандартный компонент материалов Joomla
Создание формы поиска на сайте. Почему не выводится результат поиска при вводе символов в поле поиска?
Добрый день!
Создаю форму поиска с всплывающими подсказками.
Попробую, выложить строки кода, имеющие отношение к сути проблемы и темы.
Итак, имеется файл index.html. В нём для создания формы поиска я добавил следующие строки:
script src="//yandex.st/jquery/1.7.2/jquery.min.js">/script>
div class="search_area"> form action="" method="GET"> input type="text" name="query" id="search_box" value="" autocomplete="off"> input type="submit" value="Поиск"> /form> div id="search_advice_wrapper">/div> /div>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
script type="text/javascript"> var suggest_count = 0; var input_initial_value = ''; var suggest_selected = 0; $(window).load(function(){ // читаем ввод с клавиатуры $("#search_box").keyup(function(I){ // определяем какие действия нужно делать при нажатии на клавиатуру switch(I.keyCode) { // игнорируем нажатия на эти клавишы case 13: // enter case 27: // escape case 38: // стрелка вверх case 40: // стрелка вниз break; default: // производим поиск только при вводе более 2х символов if($(this).val().length>2){ input_initial_value = $(this).val(); // производим AJAX запрос к /ajax/ajax.php, передаем ему GET query, в который мы помещаем наш запрос $.get("ajax.php", { "query":$(this).val() },function(data){ //php скрипт возвращает нам строку, ее надо распарсить в массив. // возвращаемые данные: ['test','test 1','test 2','test 3'] var list = eval("("+data+")"); suggest_count = list.length; if(suggest_count > 0){ // перед показом слоя подсказки, его обнуляем $("#search_advice_wrapper").html("").show(); for(var i in list){ if(list[i] != ''){ // добавляем слою позиции $('#search_advice_wrapper').append('+list[i]+''); } } } }, 'html'); } break; } }); //считываем нажатие клавишь, уже после вывода подсказки $("#search_box").keydown(function(I){ switch(I.keyCode) { // по нажатию клавишь прячем подсказку case 13: // enter case 27: // escape $('#search_advice_wrapper').hide(); return false; break; // делаем переход по подсказке стрелочками клавиатуры case 38: // стрелка вверх case 40: // стрелка вниз I.preventDefault(); if(suggest_count){ //делаем выделение пунктов в слое, переход по стрелочкам key_activate( I.keyCode-39 ); } break; } }); // делаем обработку клика по подсказке $('.advice_variant').live('click',function(){ // ставим текст в input поиска $('#search_box').val($(this).text()); // прячем слой подсказки $('#search_advice_wrapper').fadeOut(350).html(''); }); // если кликаем в любом месте сайта, нужно спрятать подсказку $('html').click(function(){ $('#search_advice_wrapper').hide(); }); // если кликаем на поле input и есть пункты подсказки, то показываем скрытый слой $('#search_box').click(function(event){ //alert(suggest_count); if(suggest_count) $('#search_advice_wrapper').show(); event.stopPropagation(); }); }); function key_activate(n){ $('#search_advice_wrapper div').eq(suggest_selected-1).removeClass('active'); if(n == 1 && suggest_selected suggest_count){ suggest_selected++; }else if(n == -1 && suggest_selected > 0){ suggest_selected--; } if( suggest_selected > 0){ $('#search_advice_wrapper div').eq(suggest_selected-1).addClass('active'); $("#search_box").val( $('#search_advice_wrapper div').eq(suggest_selected-1).text() ); } else { $("#search_box").val( input_initial_value ); } } script>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
.search_area{ width: 350px; margin: 0px; position: relative; } #search_box{ width:200px; padding:2px; margin:1px; border:1px solid #000; } #search_advice_wrapper{ display:none; width: 350px; background-color: rgb(80, 80, 114); color: rgb(255, 227, 189); -moz-opacity: 0.95; opacity: 0.95; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=95); filter: progid:DXImageTransform.Microsoft.Alpha(opacity=95); filter:alpha(opacity=95); z-index:999; position: absolute; top: 24px; left: 0px; } #search_advice_wrapper .advice_variant{ cursor: pointer; padding: 5px; text-align: left; } #search_advice_wrapper .advice_variant:hover{ color:#FEFFBD; background-color:#818187; } #search_advice_wrapper .active{ cursor: pointer; padding: 5px; color:#FEFFBD; background-color:#818187; }
И файл ajax.php, который предназначен (насколько понимаю или я ошибаюсь?) для обработки ввода с клавиатуры и последующего вывода результатов поиска на сайте. Его содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
if(!empty($_GET['query'])){ $query = (string)$_GET['query']; $array = array(); $request = $db->query("SELECT `description`, `name` FROM `prefix_name` WHERE `description` LIKE '%". $db->real_escape_string($query) . "%' OR `name` LIKE '%". $db->real_escape_string($query) . "%' LIMIT 0, 10"); while($data =$db->fetch_assoc($request)){ $array[] = $data['name']; } echo "['".implode("','", $array)."']"; } exit(); ?>
Так вот, по идее, должно получатся так, что, во-первых, при вводе символов должны появляться подсказки, а затем при нажатии на них — результаты поиска на сайте, но ничего этого нет! Также, если я, например, вовсе удалю файл ajax.php, то ничего не меняется. Что есть этот файл, что его нет — разницы никакой! Вопрос — почему так? Может быть, я неправильно прописываю путь к этому файлу? Файлы index.html и ajax.php находятся в папке www, являющейся для них родительской. Или, как мне некоторые говорят, необходимо сначала создать базу данных на сайте, чтобы производилась выборка из неё при помощи этого скрипта?
Как сделать форму поиска рабочей?
Оформил стили, сделал все как надо. Но сам поиск не работает. Как сделать форму поиска рабочей. Знаю что надо добавить вроде как функцию php, но какую и в какое место ее вставить понятия не имею( Помогите решить проблему.
Заранее спасибо)
Оценить 2 комментария
Вы откуда пример то брали? В WP есть дефолтная форма поиска. которая подключается через get_search_form(); (если в теме нет шаблона searchform.php). Здесь есть примеры кода дефолтной рабочей формы wp-kama.ru/function/get_search_form
Все id и name нужно сохранить, а стилизовать можете как хотите.
Смотрел урок на ютубе https://www.youtube.com/watch?v=NWMWrN6yfIk. Сделал по образу и подобию, как на видео.
pauller: ну так это просто верстка статики. Верстку еще нужно после этого сажать на «движок» и адаптировать. Я вам скинул документацию как делается форма для WP, скопируйте пример оттуда. И почитайте на досуге про формы, зачем нужны action, method, submit и прочее. И не забудьте в теме своей создать search.php для вывода результатов поиска, иначе будет использоваться index.php.
pauller: причем, урок еще и с ошибками. Как в комментах указали, что type=»get» это полный бред. И button должен быть type=»submit» и находиться ВНУТРИ формы, а не как у вас
С ошибками ? Впрочем ладно. Я создал файл search.php. Зашел по ссылке wp-kama.ru/function/get_search_form, оттуда взял код формы поиска и добавил ее в этот файл. И еще функцию для вызова формы разместил в нужном месте.
Но при вводе запроса меня перекидывает на полностью белую страницу в верхнем левом углу которой находится другая форма поиска, которая также не работает. Я тебе на почту скриншоты скину, посмотри пожалуйста))
pauller: зачем вы так сделали? Написано же search.php это шаблон для вывода результатов поиска! Саму форму ложите в searchform.php и подключаете через get_search_form();. А сам search.php оформите как положено, подключите хедер, футер, сайдбар и напишите цикл для вывода постов
pauller: вы хоть читайте, что по ссылке. И да в уроке ошибки есть, и я вам на них указал, и человек в комментах под вопросом тоже.
Не работает поиск html
не работает поиск по сайту. пишет найдено сколько то результатов но результаты не выводит. в чем может быть проблема?
вот содержимое searchresult.tpl
[searchposts] [fullresult] "news-item"> "news-item-content"> [result-link][/result-link] "news-item-tags"> "clear"> [/fullresult] [shortresult] "news-item"> "news-item-content"> [fullresult][fullresult] "dpad searchitem"> [result-link][/result-link] | | Автор: [/shortresult] [/searchposts] [searchcomments] [fullresult] "bcomment"> "dtop"> "lcol"> "" alt=""/> "rcol"> "reset"> "clr"> "cominfo">"dpad"> [not-group=5] "comedit"> "reset"> [com-edit]Изменить[/com-edit] [com-del]Удалить[/com-del] [/not-group] "cominfo reset"> Регистрация: "thide">^ "dcont"> "margin-bottom: 0.4em;">[result-link][/result-link] "clr"> [/fullresult] [shortresult] "dpad searchitem"> [result-link][/result-link] | | Автор: | [com-edit]Изменить[/com-edit] | [com-del]Удалить[/com-del] [/shortresult] [/searchcomments]
Изображения
ааааааааааааааааааааааааааааааааааа.jpg (11.2 Кб, 152 просмотров) |
Поиск по сайту не ищет текст внутри html модулей вставленных в материал — Joomla 3.x: Общие вопросы
Контент-плагин Joomla, позволяющий вставлять информацию из материалов и пользовательских полей материала в любом месте, где работают контент-плагины с помощью шорт-кода вида .Для плагина возможно (и даже необходимо) создавать свои макеты вывода, которые Вы указываете в шорт-коде.
Joomla 5: плагин обратной совместимости
Как известно, из кода Joomla постепенно исчезают устаревшие классы API. Многие из них «продержались» в ядре со времён Joomla 1.5. Отказ от них — это эволюция. Однако, удаление устаревших классов и методов будет вызывать ошибки в расширениях, которые разработчики вовремя не обновили.
Перенос материалов из компонента K2 в стандартный компонент материалов Joomla
K2 — в целом неплохой компонент (был). Некоторое время он давал гораздо больше возможностей для отображения контента, чем стандартный компонент материалов Joomla. Однако, время не стоит на месте, и сейчас стандартный компонент не уступает в возможностях компоненту K2. Разработчики Joomla потрудились на славу, чего не скажешь о разработчиках компонента K2. Мало того, что долгое время не обновлялся функционал компонента, так они не подготовили обновление для перехода на 4 версию Joomla. На момент написания этой статьи прошло почти два года с выпуска Joomla 4, а обновления компонента K2 для совместимости с новой версией так и нет. Возможно, на тот момент, когда вы будете читать эти строки разработчики K2 что-то выкатят, но сейчас нет.