На одном из своих сайтов решил реализовать поиск по тэгам. Мне нужно было, чтобы в текстовом поле input набрать тэг, нажать enter или кнопку поиск и этот тэг прописался в адресной строке поиска, т.е. чтобы выглядело следующим образом http://сайт.ru/site/tag/видео.
Я вспомнил, что данный функционал присутствует на хабре. Возможно все гораздо проще, тогда просьба отписать в комментах.
Приступим.
К примеру, возьмем URL http://habrahabr.ru/tag/microsoft. Как видно, “microsoft” присутствует как в адресной строке, так и в поле для поиск тэгов, причем в этом поле мы можем набрать какой угодно тэг и по нему будет производиться поиск, т.е. вывод всех записей, содержащих данный тэг (кстати, странно, что не нашлось ничего по запросу http://habrahabr.ru/tag/microsoft/company/, ну да ладно, для нас сейчас это не важно).
Итак, заглянув в код страницы, я увидел следующее:
<form>
<fieldset>
<a title="перейти на страницу со всеми метками" href="/tag/"eventwasset="on"><img alt="метки"
src="/i/tagcloud.gif"/></a> <div class="rarr">?</div> <input type="text" id="tag-search-field" name="tag"
value="microsoft" class="inpt-text js-field-data js-autosuggest-field" autocomplete="off"/>
<div class="js-autosuggest-output"/>
<select>
<option value="">топики</option>
<!-- option value='blog'>блоги</option-->
<option value="people">люди</option>
<option value="company" selected="selected">компании</option>
</select>
</fieldset>
</form>
отсюда мне потребуется только:
<form>
<input type="text" id="tag-search-field" name="tag" value="microsoft" class="inpt-text js-field-data js-autosuggest-field" autocomplete="off"/>
</form>
Переделываем вышеуказанный код под наши нужды, у меня получилось следующее:
<form action="/site/tag/" >
<input autocomplete="off" class="title-field js-field-data js-autosuggest-field"
value="{exp:tag:tag_name}{segment_3}{/exp:tag:tag_name}" name="tag" id="tag-search-field" type="text" />
</form>
Т.е. в value я подставляю текущее значение в {segment_3}, т.е. текущий тэг, по которому мы пришли на эту страницу. Если в этом поле написать другой тэг и нажать enter, то выводятся результаты по набранному тэгу.
Небольшое замечание. Т.к. за вывод записей по набранному тэгу у меня отвечает шаблон site/tag, то в файле tags.js я поменял var url = /tag/’
на var url = ‘/site/tag/’;
на хабре, в HEAD страницы находим скрипты, которые необходимы для вывода поискового слова в адресную строку:
<script type="text/javascript" src="http://habrahabr.ru/js/mootools-1.2-core-yc.js"></script><br />
<script type="text/javascript" src="http://habrahabr.ru/js/postsHandler.js"></script><br />
<script type="text/javascript" src="http://habrahabr.ru/js/tags.js"></script>
Скачивам эти скрипты к себе и прописываем в HEAD своей страницы. Результаты можно посмотреть на вышеуказанном сайте.