Функциональные возможности поисковой формы сайта можно улучшить, сделав поиск "живым". Пользователь начинает вводить фразу, и мгновенно отображаются результаты. Это действительно довольно удобно.
У нас будет простой блок с двумя текстовыми данными и поисковая форма с одним полем. Все подробности читайте в комментариях к коду.
classified.tdd
<?php
$titles[1] = 'Заголовок объявления';
$titles[2] = 'Текст объявления';
$types[1] = 'varchar(200)';
$types[2] = 'varchar(1000)';
$params['multi-record'] = true;
$params['part']['limit'] = 10;
$params['search']['where'] = 'beginnings';
$params['search']['fields'] = [1,2];
classified.tpl
<?php # Форма поиска if (!Blox::ajaxRequested()) # Выводить, если запрос идет не через Ajax { # Инициализация функции Blox.ajax() Blox::addToHead(Blox::info('cms','url').'/assets/blox.ajax.js'); # Форма ввода поискового текста echo " <form action='?page=$page&block=$block' method='post'> <input type='text' name='search[1]' id='search-field' onkeyup='ajaxFunc($block)' value='{Request::get($block, 'search', 'texts', 1)}' > # Когда Javascript отключен, команда на поисковый запрос делается через эту кнопку <input type='submit' value='Найти'> </form> "; } echo "<div id='ajax-dst'>"; # Вывод записей. Эта часть динамично изменяется при вводе текста в форму foreach ($tab as $dat) { echo " {$dat['edit']} <h3>$dat[1]</h3> <div>$dat[2]</div> <br /> "; } echo "<div>";classified.js
function ajaxFunc(block)
{
// Извлечем поисковый текст из поля searchField
var searchText = document.getElementById('search-field').value;
// Закодируем для страховки поисковый текст, так как он будет передаваться через URL
searchText = encodeURI(searchText);
// С помощью Ajax получим код блока и поместим его в элемент шаблона ajaxDst
Blox.ajax('?block='+block+'&s='+searchText, 'ajax-dst');
}