Перейти к содержанию
Официальный форум поддержки Simpla

поиск по свойству simpla


Перейти к решению Решено Kasha,

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

Приветствую господа фрилансеры, кто нибудь реализовывал поиск на симпле по свойству, например имеем

телефон samsung e300

у которого в свойствах прописано

операционная система : android 2.2

 

вот если вбить в строку поиска andoroid 2.2  или просто android чтоб он выводил товары с этим свойством.

Изменено пользователем Foх
Ссылка на сообщение
Поделиться на другие сайты
  • Решение

Находим в файле api/Products.php

		if(!empty($filter['keyword']))
		{
			$keywords = explode(' ', $filter['keyword']);
			foreach($keywords as $keyword)
			{
				$kw = $this->db->escape(trim($keyword));
				$keyword_filter .= $this->db->placehold("AND (p.name LIKE '%$kw%' OR p.meta_keywords LIKE '%$kw%' OR p.id in (SELECT product_id FROM __variants WHERE sku LIKE '%$kw%'))");
			}
		}

Меняем на

		if(!empty($filter['keyword']))
		{
			$keywords = explode(' ', $filter['keyword']);
			foreach($keywords as $keyword)
			{
				$kw = $this->db->escape(trim($keyword));
				$keyword_filter .= $this->db->placehold("AND (p.name LIKE '%$kw%' OR p.meta_keywords LIKE '%$kw%' OR p.id in (SELECT product_id FROM __variants WHERE sku LIKE '%$kw%') OR p.id in (SELECT product_id FROM __options o WHERE o.`value` LIKE '%$kw%'))");
			}
		}

 

И в ajax/search_products.php находим

	$simpla->db->query("SELECT p.id, p.name, i.filename as image FROM __products p
	                    LEFT JOIN __images i ON i.product_id=p.id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1)
	                    WHERE (p.name LIKE '%$kw%' OR p.meta_keywords LIKE '%$kw%' OR p.id in (SELECT product_id FROM __variants WHERE sku LIKE '%$kw%')) AND visible=1 ORDER BY p.name LIMIT ?", $limit);
	$products = $simpla->db->results();

меняем на 

	$simpla->db->query("SELECT p.id, p.name, i.filename as image FROM __products p
	                    LEFT JOIN __images i ON i.product_id=p.id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1)
	                    WHERE (p.name LIKE '%$kw%' OR p.meta_keywords LIKE '%$kw%' OR p.id in (SELECT product_id FROM __variants WHERE sku LIKE '%$kw%') OR p.id in (SELECT product_id FROM __options o WHERE o.`value` LIKE '%$kw%')) AND visible=1 ORDER BY p.name LIMIT ?", $limit);
	$products = $simpla->db->results();

Только кому и зачем это нужно я не знаю %)

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

Только кому и зачем это нужно я не знаю %)

Согласен. По описанию и аннотации поиск делал, это еще куда не шло. А по свойствам и так есть фильтр. Зачем еще раз велосипед мудрить?

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

Согласен. По описанию и аннотации поиск делал, это еще куда не шло. А по свойствам и так есть фильтр. Зачем еще раз велосипед мудрить?

:P всяко в жизни бываеТ)спасибо за ответ, да я тоже с описанием делал,а просто со свойствами интересно стало как сделать.

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

Как видно очень просто. Только если есть свойства в цифрах то очень легко получить огромную выдачу

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

Как видно очень просто. Только если есть свойства в цифрах то очень легко получить огромную выдачу

 а если выводить только точное соответствие =

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

Это не принципиально, что "лайк" что "===", всё равно при наличии широко развитых свойств выдавать кашу будет

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

Сделал по данному примеру для вариантов товара.

Встал вопрос, как теперь в результатах поиска вывести варианты товара под самим товаром. Подскажите, плиз, а то не выходит что-то реализовать данный вопрос.

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

Как видно очень просто. Только если есть свойства в цифрах то очень легко получить огромную выдачу

 

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

 

?keyword=металлический+каркас&page=2
 

Как это пофиксить?

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

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

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

Гость
Ответить в этой теме...

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

  Разрешено использовать не более 75 эмодзи.

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

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

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

Загрузка...
×
×
  • Создать...