Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2009-12-05 15:39:03

icedogas
Участник
Откуда Москва
Зарегистрирован: 2009-02-08
Сообщений: 318
Рейтинг :   
Сайт

Поиск по Xfield

Ребят, а поиск по xfield работает?

Не в сети

#2 2009-12-05 16:49:47

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Поиск по Xfield

Ещё пока нет.
Но уже близко, тестовая версия xfields'а уже научилась хранить доп. поля в отдельных полях SQL таблицы.

Не в сети

#3 2009-12-09 20:46:30

icedogas
Участник
Откуда Москва
Зарегистрирован: 2009-02-08
Сообщений: 318
Рейтинг :   
Сайт

Re: Поиск по Xfield

vitaly пишет:

Ещё пока нет.
Но уже близко, тестовая версия xfields'а уже научилась хранить доп. поля в отдельных полях SQL таблицы.

А вот это уже интересно.
Слушай, а можно пока хоть хак какой нить поставить?

Не в сети

#4 2009-12-11 02:45:04

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Поиск по Xfield

icedogas, хак? вполне.
ставишь плагин из SVN, а потом - правишь engine/includes/search.php добавляя туда новые поля

Не в сети

#5 2011-02-04 13:14:41

coreldraw
Участник
Откуда Ukraine
Зарегистрирован: 2008-10-21
Сообщений: 209
Рейтинг :   

Re: Поиск по Xfield

кстати ситуация изменилась с поиском по доп.полям? ато некое подобие каталога леплю и надо что б искало...

Не в сети

#6 2011-02-04 13:23:31

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Поиск по Xfield

Как ты себе это представляешь? Есть поле "Производитель". На форме поиска мы добавляем дополнительное поле ввода для поиска по производителям? Нужны точные совпадения или примерные?

Не в сети

#7 2011-02-04 14:04:44

icedogas
Участник
Откуда Москва
Зарегистрирован: 2009-02-08
Сообщений: 318
Рейтинг :   
Сайт

Re: Поиск по Xfield

есть кстати супер нестандартное решение - написать свою цмс на фремворке типо кодигнайт и там будет только что ты захочешь)

Не в сети

#8 2011-02-04 14:18:17

coreldraw
Участник
Откуда Ukraine
Зарегистрирован: 2008-10-21
Сообщений: 209
Рейтинг :   

Re: Поиск по Xfield

думаю на начальном этапе (всё таки надежда на каталог, который когда-то появится есть), дабы не морочится с временными допилами, достаточно что-бы поиск искал и в короткой/полной новости и в данных, которые забиты в дополнительных полях... например:
Производитель: Мерседес. При слове в поиске "Мерседес" выводил новость/новости в которой в одном из доп.полей было это слово... всё вроди как...

Wolverine  пишет:

Есть поле "Производитель". На форме поиска мы добавляем дополнительное поле ввода для поиска по производителям?

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

Не в сети

#9 2011-02-04 14:27:00

coreldraw
Участник
Откуда Ukraine
Зарегистрирован: 2008-10-21
Сообщений: 209
Рейтинг :   

Re: Поиск по Xfield

тут озвучено решение но виталий критиковал его...

icedogas пишет:
insider пишет:

/engine/includes/search.php
Найти

array_push($search, "((title Like '%".mysql_real_escape_string($s)."%') or (content Like '%".mysql_real_escape_string($s)."%'))");

Заменить на

array_push($search, "((title Like '%".mysql_real_escape_string($s)."%') or (content Like '%".mysql_real_escape_string($s)."%') or (xfields regexp '\".*".mysql_real_escape_string($s).".*\"'))");

И тогда доп. поля будут участвовать в поиске. Правда, не только их значения, но и сами названия полей. Как исправить -- не знаю, регэкспы в MySQL'е какие-то ограниченные.

Спасибо, работает норм))

Не в сети

#10 2011-02-04 14:41:12

KhadeR
Участник
Зарегистрирован: 2009-09-16
Сообщений: 207
Рейтинг :   17 

Re: Поиск по Xfield

coreldraw, если используешь xfields из SVN, то можно сделать так и будет все ок:

	if ($_REQUEST['search']) {
		$search_words	= preg_split('#[ \,\.]+#', trim(str_replace(array('<', '>', '%', '$', '#'), '', substr($_REQUEST['search'], 0, 64))), -1, PREG_SPLIT_NO_EMPTY);

		foreach ($search_words as $s) {
			array_push($search,
					array(	'OR',
							array('DATA', 'title', 'like', '%'.mysql_real_escape_string($s).'%'),
							array('DATA', 'content', 'like', '%'.mysql_real_escape_string($s).'%'),
							array('DATA', 'tags', 'like', '%'.mysql_real_escape_string($s).'%'),
							array('DATA', 'xfields_vehicleyear', 'like', '%'.mysql_real_escape_string($s).'%'),
							array('DATA', 'xfields_transmission', 'like', '%'.mysql_real_escape_string($s).'%')
				)
			);
		}

		if (count($search) > 1) { array_unshift($search, 'AND'); }
		if (count($search) == 1) { $search = $search[0]; }

		array_push($filter, $search);
	}

если хотите использовать поиск по доп. полям vehicleyear, transmission (если в настройках Вы указали, что эти поля записываются в БД), причем можно использовать поиск по тегам добавив, как описано tags

Изменено KhadeR (2011-02-04 14:44:01)

Не в сети

Подвал раздела

Работает на FluxBB