Nektov 59 Опубликовано: 19 мая 2019 Рассказать Опубликовано: 19 мая 2019 Всем здрасте С названия темы суть вопроса понятна, но, на всякий случай уточню Как настроить, какие файлы править, чтобы поиск по сайту по-умолчанию искал в названиях новостей, а не в текстах? Всем, кто поможет, заранее спасибо сайт - ThePrayerBook.info Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 19 мая 2019 Рассказать Опубликовано: 19 мая 2019 /engine/modules/search.php найти if( preg_match( "/[\||\'|\<|\>|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\+]/", $searchuser ) ) $searchuser=""; Выше вставить $titleonly = 3; 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 19 мая 2019 Рассказать Опубликовано: 19 мая 2019 Автор 13 минут назад, Gameer сказал: /engine/modules/search.php найти if( preg_match( "/[\||\'|\<|\>|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\+]/", $searchuser ) ) $searchuser=""; Выше вставить $titleonly = 3; Не совсем то, что нужно Теперь ищет только в названиях При расширенном поиске игнорирует выбор Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 19 мая 2019 Рассказать Опубликовано: 19 мая 2019 37 минут назад, Nektov сказал: Не совсем то, что нужно Теперь ищет только в названиях При расширенном поиске игнорирует выбор Вместо $titleonly = 3; Вставить if ($titleonly == 0) { $titleonly = 3; } Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 22 мая 2019 Рассказать Опубликовано: 22 мая 2019 Автор В 19.05.2019 в 19:32, Gameer сказал: Вместо $titleonly = 3; Вставить if ($titleonly == 0) { $titleonly = 3; } Та же ситуация, ищет только в названиях. При расширенном поиске игнорирует выбор Цитата Ссылка на сообщение Поделиться на других сайтах
Datagor 31 Опубликовано: 13 июня 2019 Рассказать Опубликовано: 13 июня 2019 (изменено) Привет, 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, эту правку удобнее оформить в виде плагина в админке. Изменено 13 июня 2019 пользователем Datagor Правка кода Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 2 августа 2019 Рассказать Опубликовано: 2 августа 2019 (изменено) Автор 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, то вначале (по умолчанию) будет искать по названию, а потом уже, при выборе, по тексту короткой новости? Изменено 2 августа 2019 пользователем Nektov Цитата Ссылка на сообщение Поделиться на других сайтах
Datagor 31 Опубликовано: 2 августа 2019 Рассказать Опубликовано: 2 августа 2019 (изменено) 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> Изменено 2 августа 2019 пользователем Datagor Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 3 августа 2019 Рассказать Опубликовано: 3 августа 2019 Автор 13.06.2019 в 11:24, Datagor сказал: Правим файл /engine/ajax/search.php (ориентировочно, строка 101) У меня ищет только по title. Увы но не работает Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 3 августа 2019 Рассказать Опубликовано: 3 августа 2019 26 минут назад, Nektov сказал: Увы но не работает /engine/modules/search.php найти if( preg_match( "/[\||\'|\<|\>|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\+]/", $searchuser ) ) $searchuser=""; Выше вставить if (!isset($_REQUEST['titleonly'])) { $titleonly = 3; } 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 4 августа 2019 Рассказать Опубликовано: 4 августа 2019 Автор 22 часа назад, Gameer сказал: /engine/modules/search.php найти if( preg_match( "/[\||\'|\<|\>|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\+]/", $searchuser ) ) $searchuser=""; Выше вставить if (!isset($_REQUEST['titleonly'])) { $titleonly = 3; } Есть, получилось 😀 Спасибо большое 🍺 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.