Добавление родного поиска для LS 0.3.1


Т.к. вопросы по добавлению родного поиска для LS, поднятого темой которую я начал здесь продолжают возникать — выкладываю последнюю сборку :)
файлы для добавления родного поиска для LS 0.3.1 можно скачать здесь:
http://karta39.ru/blog/wp-content/uploads/2009/05/ls-search-031.zip
доработки, которые потребуется:
1. в файле templates\skin\new\header.tpl
после строчки
<script type="text/javascript" src="{$DIR_STATIC_SKIN}/js/panel.js"></script>

нужно добавить строчку
<script type="text/javascript" src="{$DIR_STATIC_SKIN}/js/my.js"></script>

— это нужно чтобы подключить файл my.js в котором содержится функция

function submitSearch(sText) {		
	window.location=DIR_WEB_ROOT+'/search/?searchfor='+sText;
	return false;
}

впрочем, эту функцию можно перенести в ActionSearch\index.tpl

2. нужно также сделать редакцию templates\skin\new\header_nav.tpl
— заменить стандартную форму поиска на:

<form method="get" action="{$DIR_WEB_ROOT}/search/">
                        <input class="text" type="search" id="srch" maxlength="32" name="searchfor" value="Поиск" onkeyup="fast_search();" onblur="close_fast_search();" onfocus="this.select();" autocomplete="off" />
                        <input class="button" type="submit" value="" />
			</form>


Пример работы всегда можно посмотреть на idea2.ru :)
Успехов!

UPD выложил сборку в модули :)

UPD2
простая подсветка реализуется добавлением строчки
//подсветка поисковой фразы
$aTopic['topic_text_short']=str_replace($sTag,"<span class=\"searched-item\">$sTag</span>",$aTopic['topic_text_short']);

в Topic.mapper.class.php в ф-цию поиска перед
$aTopics[]=new TopicEntity_Topic($aTopic);

45 комментариев

avatar
а есть возможность реализовать разделение результатов по топикам и комментариям??
avatar
функция поиска пока не изменена — поиск идёт только в названии топика и его тексте. Предлагаете сделать отдельную функцию для поиска в комментариях?
avatar
:)
я об этом livestreet.ru/search/topics/?q=%D1%82%D0%B5%D1%81%D1%82 — здесь есть вывод резульатов как по топикам так и по комменатриям
avatar
аааа — понял :)
думаю, можно сделать :)
avatar
Когда можно ожидать сего? :)
avatar
:) сейчас я работаю над добавлением карт Google — как с этим решу вопрос — посмотрю :)
avatar
так может сразу и подсветку результатов реализовать? :)
avatar
точно :)
avatar
простая подсветка реализуется добавлением строчки
//подсветка поисковой фразы
						$aTopic['topic_text_short']=str_replace($sTag,"<span class=\"searched-item\">$sTag</span>",$aTopic['topic_text_short']);

в Topic.mapper.class.php в ф-цию поиска перед
перед $aTopics[]=new TopicEntity_Topic($aTopic);
avatar
я сделал так во всех местах, вроде бы подсвечивает. Их там несколько.

Потом заметил глюки:
Если просто нажать на поиск — то выводит все топики разом, приватные, скрытые (в черновиках), и вообще все что можно вывести. Притом страниц несколько, у меня 6 страниц — затем жмешь внизу на вторую страницу — в поле поиса появляется page2 и надпись что ничего не найдено!
avatar
Глюки полезли в STag что не может опознать, незнаю где конкретно, пришлось откатиться.
avatar
Очень не хватает подробного readme.
А если я не могу тупо заменить классы Topic что мне делать? Искать вручную изменения и потом модифицировать свои файлы?
avatar
подробный мануал был в старом топике — http://livestreet.ru/blog/909.html :)
если заменить файлы Topic и Topic.Mapper не можете — нужно всего-лишь перенести в Ваши файлы функцию GetTopicsBySearch из соответствующих фалов.
avatar
ок спс
avatar
А еще ведь нужно делать правки в шаблоне header_nav.tpl, а об этом в ридми не слова…
avatar
Сорь, по ссылке выше все это уивдел. Но почему этого нет в архиве с модулем???
avatar
забыл :)))))))
avatar
А мне интересно насколько качественно он ищет!?
Он как то слова грамматику понимает? надо чтобы вместо: «Подкасты» — искал по запросу «Подкст*» чтобы попадали все значения!
avatar
разумеется — нет :)) я же писал, что это очень простой «поиск» — подходит там, где нет возможности использовать Сфинкс :)
правило проверки такое:
LOWER(topic_text) LIKE LOWER('%{$sTag}%')

значит, что для того чтобы найти топики со словом подкасты нужно ввести любое:
п, по, под, подк, подка, подкас, "подкаст" :)
avatar
Самое обидное что ищет подзамочные записи!
Не важно админ это или просто гость сайта, Выводит все подзамки!
avatar
точно — такой проверки в коде нет :)
avatar


как пофиксить этот баг?
Причем на ЛС оригинальном его нету!
avatar
я так понимаю — Safari :)
похоже делдо в коде формы поиска в templates\skin\new\header_nav.tpl

<form method="get" action="{$DIR_WEB_ROOT}/search/">
                        <input class="text" type="search" id="srch" maxlength="32" name="searchfor" value="Поиск" onkeyup="fast_search();" onblur="close_fast_search();" onfocus="this.select();" autocomplete="off" />
                        <input class="button" type="submit" value="" />
                        </form>

который заменяет стандартный
<form action="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_SEARCH}/topics/" method="GET">
				<input class="text" type="text" onblur="if (!value) value=defaultValue" onclick="if (value==defaultValue) value=''" value="{$aLang.search}" name="q" />
				<input class="button" type="submit" value="" /> 

можно попробовать поиграться с ней — например вернуть стандартную, убрать topics :)
avatar
произвёл установку по инструкции, сначала всё работает, а потом сайт падает и выдаётся сообщение:

Fatal error: Uncaught exception 'Exception' with message 'Не найден класс модуля - GetCountTopicsFriendsNew' in /home/webmaster/www/nmsk-online.ru/classes/engine/Engine.class.php:95 Stack trace: #0 /home/webmaster/www/........../classes/engine/Engine.class.php(183): Engine->LoadModule('GetCountTopicsF...', true) #1 /home/webmaster/www/........../classes/engine/Module.class.php(37): Engine->_CallModule('GetCountTopicsF...', Array) #2 [internal function]: Module->__call('GetCountTopicsF...', Array) #3 /home/webmaster/www/nmsk-online.ru/classes/engine/Engine.class.php(187) : eval()'d code(1): LsTopic->GetCountTopicsFriendsNew('2') #4 /home/webmaster/www/........../classes/engine/Engine.class.php(187): eval() #5 /home/webmaster/www/........../classes/engine/Action.class.php(268): Engine->_CallModule('Topic_GetCountT...', Array) #6 [internal function]: Action->__call('Topic_GetCountT...', Array) #7 /home/webmaster/www/........../classes/actions/ActionIndex.class.php(72): ActionIndex->Topi in /home/webmaster/www/........../classes/engine/Engine.class.php on line 95

хелп плиз, без поиска плохо!
avatar
похоже дело не в модуле поиска, а в каком-то другом :) может быть ты заменил файлы
Topic.class.php и Topic.mapper.class.php, а там были функции для работы другого модуля?
avatar
может эти файлы вручную подпрвить для поиска?
Только вот как? и что добавлять?
avatar
может эти файлы вручную подпрвить для поиска?
Только вот как? и что добавлять?
Я пытался установить ленту ЖЖ, были траблы.
Может залить родные Topic.class.php и Topic.mapper.class.php и потом поиск ставить?
avatar
именно так и стоит сделать :) а потом открой в редакторе (только не в блокноте, а в том, который поддерживает нормальную работу с utf-8, например notepad++) и вставь нужнуе функцию из Topic.class.php и Topic.mapper.class.php, которые идут в модуле:
public function GetTopicsBySearch()

avatar
вот теперь всё вроде работает!
Спасибо!
avatar
А как быть, если результаты не выводятся совсем? Чистый лист…
avatar
Заработало!!! Перечитал все, изучил, руки подровнял и все как по маслу! Спасибо за «родной поиск»!!!
avatar
:)))
avatar
реально он выводит даже тексты с черновиков, если не вводить поисковое слово и просто нажать на поиск. что делать? (с) Чернышевский
  • F-5
  • 0
avatar
думаю, нужно внести изменения в SQL-запрос функции поиска — проверять, что топик скрыт или он — черновик и исключать такие из поиска :)
avatar
ну как то у вас то ведь работает))
avatar
у меня работает точно такой же модуль — просто нету черновиков :))))
avatar
Здравствуйте, поставил, всё нормально, но вот только поиск выдается чистым листом, пересмотрел всё, вроде нормально сделал, в чем проблема не могу понять, подскажите пожалуйста…
avatar
хм… сложно сказать — перечислите шаги, которые Вы сделали.
avatar
Сделал все выше перечисленные шаги, вроде всё нормально, как даю поиск, чистый лист и всё…
avatar
что показывает исходный код страницы?
avatar
В версиях из svn никто не проверял?
avatar
что?
avatar
В 0.4 будет работать? А то я совершенно случайно обнаружил что поиск у меня не работает. В установке ни слова про его настройку. Я думал из коробки есть.
avatar
пока не знаю :) данная версия для 0.3.1 :)
в дефолтной установке — поиск осуществляется через сфинкс.
avatar
Я уж понял, перечитав несколько топиков. Что это за зверь даже не слышал. Вероятно на хостинге его нет :) Поставлю гугловский тогда. У меня 2 CMS на домене, так что будет логично сделать двойной поиск.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.