Искать  
 
   
 
Делаем поиск по тэгам в ExpressionEngine, как на хабре
Отправлено: 11 Январь 2009 01:17 P.M.   [ Игнорировать ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27

На одном из своих сайтов решил реализовать поиск по тэгам. Мне нужно было, чтобы в текстовом поле 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 своей страницы. Результаты можно посмотреть на вышеуказанном сайте.

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 12 Январь 2009 01:18 P.M.   [ Игнорировать ]   [ # 1 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

вот если ниже приведенный плагин немного обработать “напильником” и внедрить поиск по тэгам, получится более гибкая и функциональная вещь...
http://pascalkriete.com/journal/entry/live_search_plugin/

 Подпись 

booooring…

Профиль
 
 
Отправлено: 12 Январь 2009 02:21 P.M.   [ Игнорировать ]   [ # 2 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27
Calm - 12 Январь 2009 01:18 P.M.

вот если ниже приведенный плагин немного обработать “напильником” и внедрить поиск по тэгам, получится более гибкая и функциональная вещь...
http://pascalkriete.com/journal/entry/live_search_plugin/

Да и для обычного поиска на сайте (не в админке) тоже не помешало бы интегрировать.

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 12 Январь 2009 02:23 P.M.   [ Игнорировать ]   [ # 3 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

так это модуль(плагин) не для админки smile, посмотри по линку

 Подпись 

booooring…

Профиль
 
 
Отправлено: 12 Январь 2009 02:57 P.M.   [ Игнорировать ]   [ # 4 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27
Calm - 12 Январь 2009 02:23 P.M.

так это модуль(плагин) не для админки smile, посмотри по линку

Замечательно, потестируем обязательно.
Не перестаешь удивляться различным дополнениями для ЕЕ, А сколько на еще не известно?

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 12 Январь 2009 03:09 P.M.   [ Игнорировать ]   [ # 5 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02
mrtt - 12 Январь 2009 02:57 P.M.

Замечательно, потестируем обязательно.
Не перестаешь удивляться различным дополнениями для ЕЕ, А сколько на еще не известно?

Много, очень много smile. Даже по своему “закрытому” опыту могу судить smile

 Подпись 

booooring…

Профиль