При подсветке найденного в результатах поиска в Инстанте 1.10.х выдержки текста показываются полностью строчными (маленькими) буквами независимо от наличия заглавных букв в исходном тексте. Предлагаю вашему вниманию небольшой хак, который выводит текст в результатах поиска точно так же, как в оригинале, не меняя заглавных букв.
Я не знаю почему в версии 1.10.х подсветка в результатах поиска реализована через функции, убирающие заглавные буквы. И при этом на самом instantcms.ru там же заглавные буквы сохраняются. Как — тоже не знаю. На эти мои вопросы разработчики так и не дали мне ответа. Поэтому пришлось подправить кое-что в системе своим способом.
В файле \components\search\model.php заменяем функцию getHighlightedText на новую:
На тех коротких текстах, которые выводятся в результатах поиска, использование preg_replace вместо оригинального str_replace если и увеличивает время работы скрипта, то на доли милисекунды, что в принципе незаметно. Так что тормозить не будет.
Функция проверена на английских и русских текстах — работает корректно. Если не понравится, вы всегда можете вернуть оригинальную функцию подсветки из инсталла CMS.
P.S. Оформление подсветки искомых слов в результатах поиска вынесено в стиль css "search_match". То есть, по умолчанию в отличие от стандартной подсветки найденные слова не выделяются жирным шрифтом. Если вам нужен жирный шрифт, замените <span class="search_match"> на <strong class="search_match"> (как в примере Fichter ниже) или на просто <strong>. Спасибо за подсказку, Fichter!
Я не знаю почему в версии 1.10.х подсветка в результатах поиска реализована через функции, убирающие заглавные буквы. И при этом на самом instantcms.ru там же заглавные буквы сохраняются. Как — тоже не знаю. На эти мои вопросы разработчики так и не дали мне ответа. Поэтому пришлось подправить кое-что в системе своим способом.
В файле \components\search\model.php заменяем функцию getHighlightedText на новую:
protected function getHighlightedText($text) { if (!cmsUser::sessionGet('searchquery')){ return $text; } $q = cmsUser::sessionGet('searchquery'); if ($this->look == 'phrase'){ } elseif($this->look == 'allwords') { foreach($words as $w){ if (mb_strlen($w) > 0) $text = preg_replace('/('.$w.')/iu','<span class="search_match">$1</span>', $text); } } else { // 'anyword' foreach($words as $w){ if (mb_strlen($w) > 0) $text = preg_replace('/('.$w.')/iu','<span class="search_match">$1</span>', $text); } } return $text; }
Функция проверена на английских и русских текстах — работает корректно. Если не понравится, вы всегда можете вернуть оригинальную функцию подсветки из инсталла CMS.
P.S. Оформление подсветки искомых слов в результатах поиска вынесено в стиль css "search_match". То есть, по умолчанию в отличие от стандартной подсветки найденные слова не выделяются жирным шрифтом. Если вам нужен жирный шрифт, замените <span class="search_match"> на <strong class="search_match"> (как в примере Fichter ниже) или на просто <strong>. Спасибо за подсказку, Fichter!
Реклама #
Максим Шорин 11 лет назад #
WebMan 11 лет назад #
Я понимаю, что некоторым людям при общении в инете вообще ломы пользоваться заглавными буквами и даже знаками препинания. Может быть им и не важно как что-то написано. Но это исключительно личный выбор каждого. Кто-то выбирает путь лени и безграмотности, а кто-то хочет, чтобы его точнее понимали и с ним было проще/приятнее общаться. Для меня правильное пользование грамматикой и орфографией - это уважение к моим собеседникам. Я предпочту чуток потрудиться ради этого. Без обид, просто каждый выбирает своё.
И, кстати, все поисковики не ленятся оставлять найденный текст в том виде, в котором он был проиндексирован с сайта - с учётом заглавных букв. Видимо у них не дураки это делали. Хотя проще и экономнее сделать всё строчными буквами.
В любом случае, мне самому удобнее пользоваться таким поиском и, уверен, многим пользователям так же. И не в моих правилах "забивать" на подобные мелочи, касающиеся удобства, если я могу их реализовать. Хак выложен для тех, у кого такое же отношение к людям и к своему делу.
Максим Шорин 11 лет назад #
Fuze 11 лет назад #
По поводу "качества" поиска: поиск ищет стандартными средствами mysql (лучше не будет) и вполне прилично.
letsgo 11 лет назад #
Максим Шорин 11 лет назад #
Скела 11 лет назад #
letsgo 11 лет назад #
WebMan 11 лет назад #
На других типах сайтов поиск от поисковиков (простите за каламбур) может даже принести пользу. Теоретически. Поисковики могут как-то учитывать поисковые фразы, приходящие с сайта, для уточнения тематики сайта и своей выдачи по нему. Но это только мои предположения, конкретной инфы по этому вопросу у меня нет.
letsgo 11 лет назад #
Берете поиск, настраиваете открывать в вкладке с лого сайта, оставляете поиск только на сайте и посетители вашего сайта получают качественный поиск, с релеватной выдачей либо по дате. Не упрекаю разработчиков, так как на самом деле поиск это весьма сложная задача, но факт есть факт. Кстати здесь тоже бы не помешал встроенный поиск яд или гугл.
Anonim 11 лет назад #
Сейчас, с введенной это сортировкой, дело очень даже стало интересным, только если (как в Socium 3.0) Есть форма поиска помогающая сразу настроить его правильно
Даже на rutracker.org применяют встроенный поиск, потому что он прежде всего ищет всё! Поисковик не ищет не проиндексированное...
Но и в рутрекере есть опция - искать с помощью поисковых систем
Fichter 11 лет назад #
Fichter 11 лет назад #
WebMan 11 лет назад #
Bubble Gumoff 9 лет назад #
<a href="#1"><img src="/images/photos/small/shop54.jpg" alt="Шаровый клапан <strong class=" search_match"="">HЕS8000 (Фото 1)" title="Шаровый клапан <strong class="search_match">HЕS8000 </strong>(Фото 1)" /></a>
Если обновить страницу все в порядке становится в коде, но вот такая хрень неуместна.
Что тут на что заменяется и как избежать поломки?
Bubble Gumoff 9 лет назад #
<img src="/images/photos/small/shop54.jpg" alt="Шаровый клапан <strong class=" search_match"="">HЕS8000 (Фото 1)" title="Шаровый клапан <strong class="search_match">HЕS8000 </strong>(Фото 1)" />
а Должно быть так
<img src="/images/photos/small/shop54.jpg" alt="Шаровый клапан HЕS8000 (Фото 1)" title="Шаровый клапан HЕS8000 (Фото 1)" />
Причем как то криво заменилось на <strong class=" search_match"
WebMan 9 лет назад #
1. Отключите поиск по картинкам.
2. Замените везде в коде поиска
Bubble Gumoff 9 лет назад #
Bubble Gumoff 9 лет назад #
2. сделал
3. это вряд ли осилю
Bubble Gumoff 9 лет назад #
Bubble Gumoff 9 лет назад #