Перейти к публикации

Рекомендованные сообщения

Здраствуйте, подскажите как можно реализовать подсветку искомых слов и словосочетаний для поиска на сайте, в новостях и главное на статических страницах?!

Например в поиске вбиваем - Частые неисправности

Хотелось бы видеть такой результат

9.jpg

Буду очень признателен за помощь!

starlinc.ru

Изменено пользователем KorsarSL
ошибка
Ссылка на сообщение
Поделиться на других сайтах
  • KorsarSL изменил заголовок на Как реализовать подсветку искомых слов?

I have found something like that DLE 13.2-14.x:

 

<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
	<name>Hilites</name>
	<description>Подсветка искомого запроса в результатах поиска.</description>
	<icon></icon>
	<version>1.0</version>
	<dleversion>13</dleversion>
	<versioncompare>greater</versioncompare>
	<upgradeurl>https://quantum-soft.net/plugins/hilites.php</upgradeurl>
	<filedelete>0</filedelete>
	<needplugin></needplugin>
	<mysqlinstall><![CDATA[]]></mysqlinstall>
	<mysqlupgrade><![CDATA[]]></mysqlupgrade>
	<mysqlenable><![CDATA[]]></mysqlenable>
	<mysqldisable><![CDATA[]]></mysqldisable>
	<mysqldelete><![CDATA[]]></mysqldelete>
	<phpinstall><![CDATA[]]></phpinstall>
	<phpupgrade><![CDATA[]]></phpupgrade>
	<phpenable><![CDATA[]]></phpenable>
	<phpdisable><![CDATA[]]></phpdisable>
	<phpdelete><![CDATA[]]></phpdelete>
	<file name="engine/modules/functions.php">
		<operation action="before">
			<searchcode><![CDATA[function preg_quote_replacement($str) {]]></searchcode>
			<replacecode><![CDATA[function hilites($search, $txt) {
	$r = preg_split( '((>)|(<))', $txt, - 1, PREG_SPLIT_DELIM_CAPTURE );

	for($i = 0; $i < count($r); $i++) {
		if( $r[$i] == "<" ) {
			$i++;
			continue;
		}
		$r[$i] = preg_replace( "#($search)#i", "<span style='background-color:yellow;'><font color='red'>\\1</font></span>", $r[$i] );
	}
	return join("", $r);
}]]></replacecode>
			<searchcount>1</searchcount>
		</operation>
	</file>
	<file name="engine/modules/search.php">
		<operation action="after">
			<searchcode><![CDATA[						include (DLEPlugins::Check(ENGINE_DIR . '/modules/show.custom.php'));]]></searchcode>
			<replacecode><![CDATA[						
						$arr = explode(" ", $story);

						foreach ( $arr as $word ) {
							if( strlen(trim($word)) >= $config['search_length_min'] ) {
								$tpl->result['content'] = hilites($word, $tpl->result['content']);
							}
						}]]></replacecode>
			<searchcount>1</searchcount>
		</operation>
	</file>
	<file name="engine/ajax/search.php">
		<operation action="after">
			<searchcode><![CDATA[	$description = preg_replace( "'\[attachment=(.*?)\]'si", "", $description );]]></searchcode>
			<replacecode><![CDATA[	$arr = explode(" ", $query);

	foreach ( $arr as $word ) {
		if( strlen(trim($word)) >= $config['search_length_min'] ) {
			$description = hilites($word, $description);
		}
	}]]></replacecode>
			<searchcount>1</searchcount>
		</operation>
		<operation action="before">
			<searchcode><![CDATA[	    $buffer .= "<a href=\"" . $full_link . "\"><span class=\"searchheading\">" . stripslashes( $row['descr'] ) . "</span></a>";]]></searchcode>
			<replacecode><![CDATA[		$arr = explode(" ", $query);

		foreach ( $arr as $word ) {
			if( strlen(trim($word)) >= $config['search_length_min'] ) {
				$row['descr'] = hilites($word, $row['descr']);
			}
		}]]></replacecode>
			<searchcount>1</searchcount>
		</operation>
	</file>
</dleplugin>

 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...