• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Как в search.php указать определённое доп. поле?

drkrol

Постоялец
Регистрация
6 Мар 2016
Сообщения
112
Реакции
11
Здравствуйте. В файле search.php есть строчка, которая отвечает за то, где будет происходить поиск:
PHP:
$db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1".$this_date."
AND (short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR title LIKE '%{$query}%') ORDER by date DESC LIMIT 5");
Меня не устраивает, что он ищет во всех доп. полях. Подскажите, на что я должен поменять код: xfields LIKE '%{$query}%' , чтобы поиск производился только, к примеру, в поле zagolovok?
 
PHP:
xfields LIKE '%zagolovok|{$query}%'

или

PHP:
SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  'zagolovok|', -1 ) ,  '||', 1 ) LIKE '%{$query}%'
 
Последнее редактирование:
Я извиняюсь, конечно, но мне кажется: я сошел с ума...
В понедельник я гуглю, как сделать так, чтобы поиск работал только по заголовкам.
Натыкаюсь на решение.
Пробую его. Работает: DLE ищет только по заголовкам статей.
Это решение мне не подходит, так как мне еще нужен поиск по определённым дополнительным полям.
Пишу сюда, к вам на форум.
Через 5 дней Attyla мне отвечает.
Я пробую его решение. DLE ищет везде: и в заголовках, и в кратких новостях , и в полных новостях.
Я в недоумении. Ведь указал только определённое дополнительное поле
Стираю все места поиска, кроме title LIKE '%{$query}%'
DLE плевать: он ищет везде.
Чищу кеш, меняю браузер
DLE непоколебим. Ищет везде, где только можно.
Нахер стираю всю строку в файле search.php начиная с $db->query("SELECT id, s... заканчивая ...ORDER by date DESC LIMIT 5");
DLE делает вид, что это вообще не его файл и всё равно ищет мой запрос поиска во всех местах...
...
Доктор, скажите, что со мной?
 
Я извиняюсь, конечно, но мне кажется: я сошел с ума...
В понедельник я гуглю, как сделать так, чтобы поиск работал только по заголовкам.
Натыкаюсь на решение.
Пробую его. Работает: DLE ищет только по заголовкам статей.
Это решение мне не подходит, так как мне еще нужен поиск по определённым дополнительным полям.
Пишу сюда, к вам на форум.
Через 5 дней Attyla мне отвечает.
Я пробую его решение. DLE ищет везде: и в заголовках, и в кратких новостях , и в полных новостях.
Я в недоумении. Ведь указал только определённое дополнительное поле
Стираю все места поиска, кроме title LIKE '%{$query}%'
DLE плевать: он ищет везде.
Чищу кеш, меняю браузер
DLE непоколебим. Ищет везде, где только можно.
Нахер стираю всю строку в файле search.php начиная с $db->query("SELECT id, s... заканчивая ...ORDER by date DESC LIMIT 5");
DLE делает вид, что это вообще не его файл и всё равно ищет мой запрос поиска во всех местах...
...
Доктор, скажите, что со мной?

1. Пробуйте сделать запрос в БД напрямую, например через phpmyadmin.
2. Отслеживайте запросы в БД, например использую такой инструмент
Скрытое содержимое доступно для зарегистрированных пользователей!

3. Удостоверьтесь что вы ищите именно на том сайте где редактировали файл поиска. (Например, не путайте локальный сайт с удаленным, такое тоже бывает когда у сайтах в обеих местах одинаковые названия).
 
Хрен его знает, почему в понедельник всё работало... но title LIKE '%{$query}%' ,как я понял, относится к быстрому поиску. это не поиск, а быстрый поиск. Нужно редактировать search.php, который находится в папке modules, а не в папке ajax. тут я сглупил.

Короче, потомки, вникайте. В этом решении есть очень значительный минус: искать в полной или в краткой новости будет невозможно.
В папке modules берёте файл search.php и переходите к строке с текстом:
PHP:
$titleonly_where = array ('0' => "short_story LIKE '%{story}%' OR full_story LIKE '%{story}%' OR xfields LIKE '%{story}%' OR title LIKE '%{story}%'", // Искать только в статьях
меняете её на
PHP:
$titleonly_where = array ('0' => "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  'podraz|', -1 ) ,  '||', 1 ) LIKE '%{story}%' OR SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  'podname|', -1 ) ,  '||', 1 ) LIKE '%{story}%' OR title LIKE '%{story}%'", // Искать в заголовке и в доп полях
где podraz и podname - это два дополнительных поля, в которых нужно искать.

Attyla,
1) xfields LIKE '%zagolovok|{$story}%' - не пашет
2) немного тупой вопрос: откуда ты узнал, что вот такой вид кода SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, 'zagolovok|', -1 ) , '||', 1 ) LIKE '%{$story}%' будет работать? Такое чувство, что ты сам писал search.php и знаешь его тонкости.
 
если $story='word', то он будет искать только где zagolovok|word, а не где zagolovok|blablaword

Документация:
Для просмотра ссылки Войди или Зарегистрируйся
Я сразу не обратил внимания, но сейчас вот заметил: dle ищет только в определённом поле, а не во всех сразу. У меня статья имеет такой вид:
Заголовок: CC с SPF15
Доп. поле: Тональный крем
Доп. поле: Светлый
Если в поиске забить SPF15, то dle его без проблем найдёт, но если забить крем SPF15, то dle ничего не найдёт. Подскажи, как сделать, чтобы поиск работал по всем полям сразу?
 
Я сразу не обратил внимания, но сейчас вот заметил: dle ищет только в определённом поле, а не во всех сразу. У меня статья имеет такой вид:
Заголовок: CC с SPF15
Доп. поле: Тональный крем
Доп. поле: Светлый
Если в поиске забить SPF15, то dle его без проблем найдёт, но если забить крем SPF15, то dle ничего не найдёт. Подскажи, как сделать, чтобы поиск работал по всем полям сразу?

В "доп. поле: тональный крем" есть еще другие значения?
Представляю себе примерно так модель:
Доп. поле "крем", список: тональный, детский, третий, четвертый......
Доп. поле "цвет", список: светлый, темный, серобуромалиновый.......

Такую модель структуры обработает модуль Field Search.
Скрытое содержимое доступно для зарегистрированных пользователей!
 
В "доп. поле: тональный крем" есть еще другие значения?
Представляю себе примерно так модель:
Доп. поле "крем", список: тональный, детский, третий, четвертый......
Доп. поле "цвет", список: светлый, темный, серобуромалиновый.......
Для просмотра ссылки Войди или Зарегистрируйся вот ссылка рабочая на модель.
Есть доп. поле: крем, помада, карандаш и т.д.
Такую модель структуры обработает модуль Field Search.
Я извиняюсь, конечно, но это же сортировка, не поиск.
 
Там и поиск, и сортировка. Вам же поиск нужен?
Была у меня где-то первая версия без ионкуба, если найду выложу.
Там смысл такой, что в поиск можно вывести поля с выбором значений, пользователь выбирает эти значения, жмет кнопку "поиск" и получает искомый результат. У Вас я не увидел формы поиска с выбором значений доп. полей. Может я недопонял вопрос, но этот модуль ищет по доп. полям, по всем сразу.

Выложил, посмотрите, может подойдет.
Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
Назад
Сверху