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

По-умолчанию поиск в названиях, а не текстах новостей?


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

Всем здрасте :)

С названия темы суть вопроса понятна, но, на всякий случай уточню

Как настроить, какие файлы править, чтобы поиск по сайту по-умолчанию искал в названиях новостей, а не в текстах?

 

Всем, кто поможет, заранее спасибо

сайт - ThePrayerBook.info

Ссылка на сообщение
Поделиться на других сайтах
13 минут назад, Gameer сказал:

/engine/modules/search.php найти


if( preg_match( "/[\||\'|\<|\>|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\+]/", $searchuser ) ) $searchuser="";

Выше вставить


$titleonly = 3;

 

Не совсем то, что нужно

Теперь ищет только в названиях :huh:

При расширенном поиске игнорирует выбор

Ссылка на сообщение
Поделиться на других сайтах
37 минут назад, Nektov сказал:

Не совсем то, что нужно

Теперь ищет только в названиях :huh:

При расширенном поиске игнорирует выбор

Вместо

$titleonly = 3;

Вставить

if ($titleonly == 0) {
    $titleonly = 3;
}

 

Ссылка на сообщение
Поделиться на других сайтах
В 19.05.2019 в 19:32, Gameer сказал:

Вместо


$titleonly = 3;

Вставить


if ($titleonly == 0) {
    $titleonly = 3;
}

Та же ситуация, ищет только в названиях. При расширенном поиске игнорирует выбор

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

Привет, Nektov!

Нужно немножно поменять поисковый SQL-запрос.
На примере быстрого поиска, который включен на вашем сайте. Другие виды поиска не затронуты.

Правим файл /engine/ajax/search.php  (ориентировочно, строка 101)

У меня ищет только по title.

В оригинале ищет по short_story и далее (short_story, full_story, xfields, title), т.е. title в оригинале на последнем месте.


 

// Было:
// $db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id)  WHERE p.approve=1 AND e.disable_search=0".$this_date.$where_category." AND (short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR title LIKE '%{$query}%') ORDER by date DESC LIMIT 5");


// Стало:
$db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id)  WHERE p.approve=1 AND e.disable_search=0".$this_date.$where_category." AND (title LIKE '%{$query}%') ORDER by title ASC LIMIT 10");

// LIMIT 10 - сколько выводить вариантов в быстром поиске.
// ORDER by title ASC - сортировать по названию статьи от А до Я - настройка сортировки, можно совсем удалить.

 

При проверке работы не забывайте чистить кэш в админке и кэш браузера (CTRL+F5).


Ну и конечно же, в новой версии DLE, эту правку удобнее оформить в виде плагина в админке.

 

Изменено пользователем Datagor
Правка кода
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...
13.06.2019 в 11:24, Datagor сказал:

(short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR title LIKE '%{$query}%')

Я так понял изначальное условие в этом куске кода?

И если поменять местами short_story и title, то вначале (по умолчанию) будет искать по названию, а потом уже, при выборе, по тексту короткой новости?

Изменено пользователем Nektov
Ссылка на сообщение
Поделиться на других сайтах
2 hours ago, Nektov said:

И если поменять местами short_story и title, то вначале (по умолчанию) будет искать по названию, а потом уж

Не уверен, попробуйте ваши варианты и сравните результаты. Не забывайте чистить кэш в админке.

 

Вот плагин, что работает у меня:

https://yadi.sk/d/xzga0OFB0unIgw

 

<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
	<name>PL19 Быстрый поиск только по заголовкам статей</name>
	<description>Меняя запрос можно изменить места поиска</description>
	<icon></icon>
	<version>1.1</version>
	<dleversion>13</dleversion>
	<versioncompare>greater</versioncompare>
	<upgradeurl></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/ajax/search.php">
		<operation action="replace">
			<searchcode><![CDATA[$db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id)  WHERE p.approve=1 AND e.disable_search=0".$this_date.$where_category." AND (short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR title LIKE '%{$query}%') ORDER by date DESC LIMIT 5");]]></searchcode>
			<replacecode><![CDATA[$db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id)  WHERE p.approve=1 AND e.disable_search=0".$this_date.$where_category." AND (title LIKE '%{$query}%') LIMIT 10");]]></replacecode>
		</operation>
	</file>
</dleplugin>

 

Изменено пользователем Datagor
Ссылка на сообщение
Поделиться на других сайтах
13.06.2019 в 11:24, Datagor сказал:

Правим файл /engine/ajax/search.php  (ориентировочно, строка 101)

У меня ищет только по title.

Увы но не работает 

Ссылка на сообщение
Поделиться на других сайтах
26 минут назад, Nektov сказал:

Увы но не работает 

/engine/modules/search.php найти

if( preg_match( "/[\||\'|\<|\>|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\+]/", $searchuser ) ) $searchuser="";

Выше вставить

if (!isset($_REQUEST['titleonly'])) {
   $titleonly = 3;
}

 

Ссылка на сообщение
Поделиться на других сайтах
22 часа назад, Gameer сказал:

/engine/modules/search.php найти


if( preg_match( "/[\||\'|\<|\>|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\+]/", $searchuser ) ) $searchuser="";

Выше вставить


if (!isset($_REQUEST['titleonly'])) {
   $titleonly = 3;
}

 

Есть, получилось 😀

Спасибо большое 🍺

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

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

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

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

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

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

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

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

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

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