Перейти к содержимому


Фото
- - - - -

Вывод и поиск артикула на сайте

артикул поиск_по_артикулу вывод_артикула_на_сайт

  • Чтобы отвечать, сперва войдите на форум
69 ответов в теме

#1 Android

Android
  • Пользователь
  • 4 сообщений

Опубликовано 19.03.2012 - 08:33

Необходимо вывести в клиентскую часть артикулы товаров и включить в поиск возможность искать по артикулу. Как реализовать?
Есть ли готовые решения данной задачи? Вознаграждение обсуждается.
Simpla 2.0.2



#2 andrewftl

andrewftl
  • Пользователь
  • 225 сообщений

Опубликовано 19.03.2012 - 08:52

Очень нужно тоже! версия 2.1



#3 alinamolchanova

alinamolchanova
  • Забаненый
  • 121 сообщений

Опубликовано 19.03.2012 - 09:50

постучитесь 314235331 помогу)



#4 beagler

beagler
  • Пользователь
  • 47 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 19.03.2012 - 14:50

Поиск - в api/Products.php
после
$keywords = explode(' ', $filter['keyword']);


пишем
$keywords_table = ', s_variants v ';$keywords_field = ', v.sku ';


вместо
$keyword_filter .= $this->db->placehold('AND (p.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR p.meta_keywords LIKE "%'.mysql_real_escape_string(trim($keyword)).'%") ');


пишем
$keyword_filter .= $this->db->placehold(' AND p.id=v.product_id AND (v.sku LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR p.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR p.meta_keywords LIKE "%'.mysql_real_escape_string(trim($keyword)).'%") ');


дальше в запросе после
LEFT JOIN __brands b ON p.brand_id = b.id


пишем
$keywords_table


теперь live поиск - открываем ajax/search_products.php
и меняем запрос на
$simpla->db->query('SELECT p.id, p.name, i.filename as image FROM __products pLEFT JOIN __images i ON i.product_id=p.id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1), __variantsWHERE p.id=__variants.product_id AND (p.name LIKE "%'.mysql_real_escape_string($keyword).'%" OR __variants.sku LIKE "%'.mysql_real_escape_string($keyword).'%") AND visible=1 ORDER BY p.name LIMIT ?', $limit);


проверял, работает.

#5 filth

filth
  • Пользователь
  • 345 сообщений
  • Пользователь

Опубликовано 19.03.2012 - 15:38

beagler мегаспасибо, работает!!! Ещё бы что б на сайте отображало))

только одно НО: выдаёт Notice: Undefined variable: keywords_table in...api/Products.php on line 127
что это может быть?



#6 filth

filth
  • Пользователь
  • 345 сообщений
  • Пользователь

Опубликовано 19.03.2012 - 16:34

Вот нашёл решение для клиентской части (версия 2.1)
в product.tpl
после например (а вообще можно в любом месте)
{* Заголовок *}

?<\h1 data-product="{$product->id}"uct->name|escape}></h1\>

добавляем, например

<\h3data-product="{$product->id}">Арт.{$product->variant->sku}></h2\>



#7 igoryk

igoryk
  • Пользователь
  • 173 сообщений
  • Пользователь

Опубликовано 19.03.2012 - 18:38

Встречал ранее другое решение меняем запрос на -

if(!empty($filter['keyword']))
		{
			$keywords = explode(' ', $filter['keyword']);
			foreach($keywords as $keyword)
				$keyword_filter .= $this->db->placehold('AND (p.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR p.meta_keywords LIKE "%'.mysql_real_escape_string(trim($keyword)).'%") ');
		}


Больше ничего нигде не трогаем.

Работает и админке, и по сайту (проверял на 2.1)



#8 beagler

beagler
  • Пользователь
  • 47 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 19.03.2012 - 23:08

Что то не увидел в последнем решении артикула. А чтобы не было нотис - нужно в начале новым переменным присвоить ''



#9 filth

filth
  • Пользователь
  • 345 сообщений
  • Пользователь

Опубликовано 20.03.2012 - 02:35

"нужно в начале новым переменным присвоить '' - можно пожалуйста поподробнее))



#10 beagler

beagler
  • Пользователь
  • 47 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 20.03.2012 - 03:02

в начале функции

$keywords_table='';



#11 filth

filth
  • Пользователь
  • 345 сообщений
  • Пользователь

Опубликовано 20.03.2012 - 03:13

после этого вообще засыпает ошибками



#12 beagler

beagler
  • Пользователь
  • 47 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 20.03.2012 - 03:21

после

$order = 'p.position DESC';

добавил
$keywords_table = '';
$keywords_field = '';


Ошибок не наблюдаю



#13 filth

filth
  • Пользователь
  • 345 сообщений
  • Пользователь

Опубликовано 20.03.2012 - 03:28

Спасибо ОГРОМНОЕ!!! всё нормуль.



#14 filth

filth
  • Пользователь
  • 345 сообщений
  • Пользователь

Опубликовано 20.03.2012 - 04:30

Ещё раз огромное спасибо!!!



#15 Android

Android
  • Пользователь
  • 4 сообщений

Опубликовано 20.03.2012 - 10:44

вместо
$keyword_filter .= $this->db->placehold('AND (p.name LIKE \"%'.mysql_real_escape_string(trim($keyword)).'%\" OR p.meta_keywords LIKE \"%'.mysql_real_escape_string(trim($keyword)).'%\") ');

У меня эта строка выглядит так:
$keyword_filter .= $this->db->placehold('AND p.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" ');

Делаю все как описано, в итоге при вводе артикула выпадает нужный товар, а при выборе, либо поиске выдает гору ошибок следующего вида:
Warning: Unknown column 'v.product_id' in 'where clause' [SELECT count(distinct p.id) as count FROM s_products AS p WHERE 1 AND p.id=v.product_id AND (v.sku LIKE "%Nokia%" OR p.name LIKE "%Nokia%" OR p.meta_keywords LIKE "%Nokia%") AND p.id=v.product_id AND (v.sku LIKE "%C2-03%" OR p.name LIKE "%C2-03%" OR p.meta_keywords LIKE "%C2-03%") AND p.visible=1 ] in /home/....../docs/api/Database.php on line 116

Warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' s_variants v AND p.id=v.product_id AND (v.sku LIKE "%N' at line 22 [SELECT p.id, p.url, p.brand_id, p.name, p.annotation, p.body, p.position, p.created as created, p.visible, p.featured, p.meta_title, p.meta_keywords, p.meta_description, b.name as brand, b.url as brand_url FROM s_products p LEFT JOIN s_brands b ON p.brand_id = b.id WHERE 1 , s_variants v AND p.id=v.product_id AND (v.sku LIKE "%Nokia%" OR p.name LIKE "%Nokia%" OR p.meta_keywords LIKE "%Nokia%") AND p.id=v.product_id AND (v.sku LIKE "%C2-03%" OR p.name LIKE "%C2-03%" OR p.meta_keywords LIKE "%C2-03%") AND p.visible=1 ORDER BY p.position DESC LIMIT 0, 24 ] in /home/....../docs/api/Database.php on line 116

Warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' s_variants v AND p.id=v.product_id AND (v.sku LIKE "%N' at line 22 in /home/....../docs/api/Database.php on line 161

Warning: Invalid argument supplied for foreach() in /home/....../docs/view/ProductsView.php on line 131

Warning: Cannot modify header information - headers already sent by (output started at /home/....../docs/api/Database.php:116) in /home/....../docs/index.php on line 26



#16 Android

Android
  • Пользователь
  • 4 сообщений

Опубликовано 20.03.2012 - 10:52

да, у меня это происходит если из кода убрать \
Если все заменить как описано выше, live поиск не работает вообще.



#17 filth

filth
  • Пользователь
  • 345 сообщений
  • Пользователь

Опубликовано 20.03.2012 - 12:03

Android дай свою почту или аську, скину Тебе файлик готовый (api/Products.php )
может с него у Тебя получиться списать. У меня всё работает.



#18 andrewftl

andrewftl
  • Пользователь
  • 225 сообщений

Опубликовано 21.03.2012 - 15:18

А можно както поподробнее расписать весь путь модификации? Заранее большое спасибо!

И если можно номера строк какие нужно менять, потому что некоторые строки которые нужно заменить встречаются дважды.



#19 filth

filth
  • Пользователь
  • 345 сообщений
  • Пользователь

Опубликовано 22.03.2012 - 02:49

andrewftl делай всё по инструкции beagler
строки 40, 78, 96, 99, 125.



#20 fluor

fluor
  • Пользователь
  • 29 сообщений

Опубликовано 30.03.2012 - 04:40

а куда вставить код, чтобы отображался артикул в админке, когда просматриваешь разом все товары







Также с меткой «артикул, поиск_по_артикулу, вывод_артикула_на_сайт»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых