DLE Как организовать поиск только по конкретному Доп. полю?

C
На сайте с 06.02.2014
Offline
43
1385

Здравствуйте. А есть возможность организовать поиск только по доп. полю? Уточню, есть киносайт где год выхода фильма является доп. полем и ссылкой (например site.ru/xfsearch/2015). По клику на данное поле естественно показываются все записи где есть 2015 независимо от того где написано это число. И выходит, что по клику на 2015 год показывается фильм 1990 года где в описании есть цифра 2015. Как можно сделать, чтобы по клику на год-ссылку велся поиск только в определенном доп поле?

LovelAss
На сайте с 05.06.2009
Offline
96
#1

Можно заменить условие в запросе, файл /engine/engine.php


WHERE {$stop_list}xfields LIKE '%{$xf}%'

на


WHERE {$stop_list} (`xfields` = 'year|".$xf."' OR `xfields` LIKE 'year|".$xf."||%' OR `xfields` LIKE '%||year|".$xf."' OR `xfields` LIKE '%||year|".$xf."||%')

year - имя доп.поля

C
На сайте с 06.02.2014
Offline
43
#2
LovelAss:
Можно заменить условие в запросе, файл /engine/engine.php

WHERE {$stop_list}xfields LIKE '%{$xf}%'

на

WHERE {$stop_list} (`xfields` = 'year|".$xf."' OR `xfields` LIKE 'year|".$xf."||%' OR `xfields` LIKE '%||year|".$xf."' OR `xfields` LIKE '%||year|".$xf."||%')

year - имя доп.поля

Спасибо, код работает, а есть возможность делать это и для других полей? А то, сейчас перестали работать другие доп поля, такие как "страна производитель" )

LovelAss
На сайте с 05.06.2009
Offline
96
#3
croatoa:
а есть возможность делать это и для других полей?

Конечно есть. Добавляете имя доп.поля в url, затем получаете его через $_GET и подставляете в запрос, предварительно обработав функцией safesql.

C
На сайте с 06.02.2014
Offline
43
#4
LovelAss:
Конечно есть. Добавляете имя доп.поля в url, затем получаете его через $_GET и подставляете в запрос, предварительно обработав функцией safesql.

Большое спасибо, я немного зеленый в этом деле, думал будет маленький код как в примере выше))

C
На сайте с 06.02.2014
Offline
43
#5

Вопрос решил банально. Код:

WHERE {$stop_list} (`xfields` = 'year|".$xf."' OR `xfields` LIKE 'year|".$xf."||%' OR `xfields` LIKE '%||year|".$xf."' OR `xfields` LIKE '%||year|".$xf."||%' OR `xfields` = 'country|".$xf."' OR `xfields` LIKE 'country|".$xf."||%' OR `xfields` LIKE '%||country|".$xf."' OR `xfields` LIKE '%||country|".$xf."||%')

Теперь другая беда. Допустим Фильм совместного производства США и Белгии, у меня это выглядит так:

Страна: США, Белгия

В таких фильмах если кликать по США, то показываются только те фильмы где ТОЛЬКО США. То есть фильм совместного производства США, Белгия, Канада не будет показываться..

RAS
На сайте с 27.11.2005
Offline
126
RAS
#6

лучше сразу переходить на поиск через sphinx, там это легко реализовать.

Администрируем сервера, впс, вдс. Ускоряем загрузку сайтов - DLE, Word Press, Joomla, Modx... Настраиваем безопасность. Ручная чистка rootkit/malware/вирусов. (/ru/forum/867860) Разработка - shell/bash/sh/python/perl.
C
На сайте с 06.02.2014
Offline
43
#7

Я просто как чувствую, что если дописать еще один вариант с OR `xfields` LIKE 'year|".$xf."||%' то и это сработает, просто синтаксиса не понимаю)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий