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

Поиск по артикулу


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

Товарищ попросил сделать поиск по артикулу в добавлении связанных товаров:

 

http://seolike.ru/files/images/findart.jpg

 

Ищем файлик simpla/ajax/search_products.php

 

UPD: Если у вас не изменялся поиск - можно просто заменить этот файл на файл из аттача (см. нижний пост). Если меняли или вы не уверены тогда смотрите ниже.

 

находим код

	$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 "%'.mysql_real_escape_string($keyword).'%" ORDER BY p.name LIMIT ?', $limit);
	$products = $simpla->db->results();

меняем на

	$simpla->db->query('SELECT p.id, p.name, i.filename as image, v.sku as sku 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)
			LEFT JOIN __variants v ON v.product_id=p.id
	                    WHERE (p.name LIKE "%'.mysql_real_escape_string($keyword).'%") OR (v.sku LIKE "%'.mysql_real_escape_string($keyword).'%") ORDER BY p.name LIMIT ?', $limit);
	$products = $simpla->db->results();

далее ищем

		if(!empty($product->image))
			{
				$product->image = $simpla->design->resize_modifier($product->image, 35, 35);
				$products_names[] = $product->name;
			}
		else
			$products_names[] = $product->name;	

 

и меняем на

	if(!empty($product->image))
			{
				$product->image = $simpla->design->resize_modifier($product->image, 35, 35);
				$products_names[] = $product->name . ' ('.$product->sku.')';
			}
		else
				$products_names[] = $product->name . ' ('.$product->sku.')';

Получаем то что на скрине

 

Кому пригодилось - ставим лайки, говорим спасибо и пересылаем ЯД на кошелёк ;)

search_products.php

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

Для красоты рекомендую еще сделать проверку на присутствие артикула , что бы не было название товара ()

 

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

в таком случае заменяем второй код на следующий:

		if(!empty($product->image))
			{
				$product->image = $simpla->design->resize_modifier($product->image, 35, 35);
				if(!empty($product->sku))
					$products_names[] = $product->name . ' ('.$product->sku.')';
				else
					$products_names[] = $product->name;

			}
		else
				if(!empty($product->sku))
					$products_names[] = $product->name . ' ('.$product->sku.')';
				else
					$products_names[] = $product->name;

обновленный аттач в первом сообщении темы

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

Поправил баг с отображением первого варианта, теперь выводяться все возможные (для удобства поиска). Обновите у себя.

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

Sheeft
 
Спасибо!
 
Подскажите пожалуйста, если в некоторых товара артикул одинаковый, а варианты разные, как можно добавить ещё название варианта?
 
Получается, что отображает варианты:

 

Диск ведомый ВАЗ (4363)
Диск ведомый ВАЗ (4363)
Диск ведомый ВАЗ (4363)
Диск ведомый ГАЗ (555)
Диск ведомый ГАЗ (666)
Диск ведомый ГАЗ (777)
 

А нужно вот так:

Диск ведомый ВАЗ
- 13 (4363)
Диск ведомый ВАЗ
- 14 (4363)
Диск ведомый ВАЗ
- 15 (4363)
Диск ведомый ГАЗ
- 13 (555)
Диск ведомый ГАЗ
- 14 (666)
Диск ведомый ГАЗ
- 15 (777)
 

или вот так

Диск ведомый ВАЗ - 13 (4363)
Диск ведомый ВАЗ - 14 (4363) 
Диск ведомый ВАЗ - 15 (4363) 
Диск ведомый ГАЗ - 13 (555) 
Диск ведомый ГАЗ - 14 (666) 
Диск ведомый ГАЗ - 15 (777)  
Ссылка на сообщение
Поделиться на другие сайты

В первой замене где

v.sku as sku FROM __products p

нужно дописать

v.sku as sku, v.name as varname FROM __products p

и во второй замене два раза заменить

$products_names[] = $product->name . ' ('.$product->sku.')';

на

$products_names[] = $product->name . ' - '.$product->varname.' ('.$product->sku.')';
Ссылка на сообщение
Поделиться на другие сайты

 

В первой замене где

v.sku as sku FROM __products p

нужно дописать

v.sku as sku, v.name as varname FROM __products p

и во второй замене два раза заменить

$products_names[] = $product->name . ' ('.$product->sku.')';

на

$products_names[] = $product->name . ' - '.$product->varname.' ('.$product->sku.')';

Странно, но ничего не изменилось ни в админке, ни в клиентской части...

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

Дык этот допил работает и для поиска по сайту если изменить файл search_products.php в корне(

корень/ajax/search_products.php, а не в simpla/ajax)

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

Дык этот допил работает и для поиска по сайту если изменить файл search_products.php в корне(

корень/ajax/search_products.php, а не в simpla/ajax)

Всё работает, спасибо! Видимо, я где-то ошибся в коде, либо не тот файл закинул на сервер (куча бэкапов в разных вариациях)...

Ещё раз спасибо, очень пригодилось. В клиентской части ищет просто замечательно, как и в админке.

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

Да, работает, спасибо. Чтобы по всему сайту работало из /ajax/ изменил в начале файла chdir('../..'); на chdir('..');

 

Появился маленький вопрос, который висел давно в памяти: 

 

Как изменить ширину этого выпадающего списка, чтобы он стал шире чем сама строка поиска? А то глупо получается как-то выглядит... 

 

Спасибо-спасибо!

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

поиск работает суппер, но, перестали работать связанные товары, вообще ни какой товар не могу добавить, как поправить? помогите плизз.

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

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

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

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

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

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

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

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

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

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