суббота, 11 апреля 2009 г.

“Подсветка” поисковых фраз на странице результатов поиска

Есть красивый и изящный способ выделить условия поиска на странице результатов поиска в WordPress. К сожалению, я не нашел плагина или хака для решения этой задачи. Тем не менее, если немного подумать эта задача не сложна. С помощью правки шаблона не трудно реализовать небольшой хак выполняющий эту функцию.

С помощью специального php-кода, вставляемого в файл шаблона, плюс CSS, на странице результатов поиска можно реализовать выделение слов, совпадающих с поисковым запросом.

Для осуществления задачи потребуется файл search.php.

Интегрируем


1. Находим в search.php следующий код:

<?php the_title(); ?>

И заменяем его на такой код:
<?php
$title = get_the_title();
$keys = explode(" ",$s);
$title = preg_replace('/('.implode('|', $keys) .')/iu', '<strong class="search-excerpt">\0
</strong>',$title);
echo $title;
?>

2. Затем ищем код, похожий на этот:

<?php the_excerpt(); ?>

или похожий на этот:

<?php the_content(); ?>

И заменяем его на следующий код:
<?php
$excerpt = get_the_excerpt();
$keys = explode(" ",$s);
$excerpt = preg_replace('/('.implode('|', $keys) .')/iu', '<strong class="search-excerpt">\0</strong>',$excerpt);
echo $excerpt;
?>

Если у вас в шаблоне использовалась функция the_content(), то, чтобы как и прежде выводился полный текст поста, необходимо в предыдущем куске кода заменить get_the_excerpt() на get_the_content(). Только учтите, что в этом случае возможны случаи некорректного отображения форматирования поста. Поэтому я рекомендую в результатах поиска выводить анонс поста (get_the_excerpt()).

Чтобы подсвечивать слова только по их полному соответствию запросу, в вышеуказанных кодах замените: ‘/(‘.implode(‘|’, $keys) .’)/iu’ на ‘~/b(‘.implode(‘|’, $keys) .’)/b~iu’.

3. Теперь лишь осталось с помощью CSS подсветить слова искомого запроса. Для этого в файле стилей своего шаблона добавляем вот такое правило:
.search-excerpt { background: #FF9 }

4. Готово.

Как HTML-тег, так и стиль к нему (<strong class=”search-excerpt”></strong>) вы можете заменить на какой-либо другой, если есть желание. В этом случае внесите соответствующие корректировки в вышеуказанный php-код. Можно, например, сделать так, чтобы в заголовке фон выделенных слов был одним цветом, а в тексте поста другим.

С подобными знаниями можно быстро найти работу в Интернете http://www.seoded.ru/startmoney.html

Автор: Джинн.




Другие посты по этой теме:



Комментариев нет: