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

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

  • Ответов 69
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Сделал по руководству beagler, все работает, спасибо за решение. А как теперь артикул вывести в корзину, подскажите если кто реализовывал или просто знающие

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

Сделал по руководству beagler, все работает, спасибо за решение. А как теперь артикул вывести в корзину, подскажите если кто реализовывал или просто знающие

 

{$purchase->variant->sku|escape}
Ссылка на сообщение
Поделиться на другие сайты
  • 4 недели спустя...

 

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

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)

Подскажите как правельней сделать и куда прописать...а то я запутался и нифига не получилось...

Пробовал различные способы... - пытался найти по артиклю...нифига не находит...почитстил все назад 

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

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

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

 

А как дополнить поиск по названию категории?

В myAdmin данный код все отображает, но в api/Products.php никак не удается модифицировать запрос.

SELECT p . * 
FROM s_products p, s_categories c, s_products_categories pc
WHERE p.id = pc.product_id
AND c.id = pc.category_id
AND c.name =  '%keyword%'
LIMIT 0 , 30

действительно, а как сделать поиск по категориям, и почему в стандарте этого нет((

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

В 2.1.5 работает, только постоянно выдает ошибку:

Unknown column 'v.product_id' in 'where clause' [SELECT count(distinct p.id) as count\n\t\t\t\tFROM s_products AS p\n\t\t\t\t\n\t\t\t\tWHERE 1\n\t\t\t\t\t\n\t\t\t\t\tAND v.product_id=p.id AND (v.sku LIKE.....

В чем может быть дело?

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

В том что вы делаете запрос к таблицам s_products и s_variants а джойна нет ( после from s_products as p должно еще быть JOIN s_variants ON... в общем неправильный запрос...

матчасть

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

Недавно заметил, что обычный поиск по ключевым словам криво стал работать (после вышеизложеных изменений) - а именно при поиске должен найти не менее 150 товаров, на странице результата показывает всего 3!!! товара, и немеряно страниц для листания, и когда листаешь, то показывает всегда по три товара.

Проверял всю последовательность изменений - данный баг появляется сразу после:

""

Это только у Меня?

Плиз хелп!!!

Замени 

$keywords_table = ', s_variants v ';
$keywords_field = ', v.sku ';

на

$keywords_table .= ', s_variants v ';
$keywords_field .= ', v.sku ';
Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

А если подойти к вопросу по другому. В Симпле есть авто заполнение, когда забиваешь название товара, бренд и т.д. это через запятую прописывается в "ключевые слова". А что если привязать автозаполнение и к артикулу? Чтобы он так-же, как и бренд прописывался в ключевые слова.

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

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

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

 

Поиск - в 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);

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

 

 

Помогите плиз по поиску по артиклу. Можно платно.

Вывод легко насроил, но вот с поиском проблема.

Все сделал как описано. Не работает.

Ошибки:

 

 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'cygank__navitop_ru__pl'@'localhost' (using password: NO) in /home/c/cygank/navitop.ru/public_html/api/Products.php on line 179



Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/c/cygank/navitop.ru/public_html/api/Products.php on line 179



Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'cygank__navitop_ru__pl'@'localhost' (using password: NO) in /home/c/cygank/navitop.ru/public_html/api/Products.php on line 179



Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/c/cygank/navitop.ru/public_html/api/Products.php on line 179



Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'cygank__navitop_ru__pl'@'localhost' (using password: NO) in /home/c/cygank/navitop.ru/public_html/api/Products.php on line 179



Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/c/cygank/navitop.ru/public_html/api/Products.php on line 179



Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'cygank__navitop_ru__pl'@'localhost' (using password: NO) in /home/c/cygank/navitop.ru/public_html/api/Products.php on line 100



Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/c/cygank/navitop.ru/public_html/api/Products.php on line 100



Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'cygank__navitop_ru__pl'@'localhost' (using password: NO) in /home/c/cygank/navitop.ru/public_html/api/Products.php on line 100



Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/c/cygank/navitop.ru/public_html/api/Products.php on line 100



Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'cygank__navitop_ru__pl'@'localhost' (using password: NO) in /home/c/cygank/navitop.ru/public_html/api/Products.php on line 100



Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/c/cygank/navitop.ru/public_html/api/Products.php on line 100



Warning: Cannot modify header information - headers already sent
by (output started at
/home/c/cygank/navitop.ru/public_html/api/Products.php:179) in /home/c/cygank/navitop.ru/public_html/index.php on line 33

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

 

Поиск - в 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);

 

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

 

Всё работает)) 

Только в последнем случае нужно запрос подкорректировать:

 

$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), __variants WHERE 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);
Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...
  • 1 месяц спустя...
  • 2 месяца спустя...

для версии 2.3.6 у меня заработало так

 

1. в файле api/Products.php в public function get_products меняем этот код

 

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

на этот

 

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

 далее в этой же функции после этого

 

LEFT JOIN __brands b ON p.brand_id = b.id

 добавляем

 

LEFT JOIN __variants v ON v.product_id = p.id

2. далее идем в файл 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 "%'.$simpla->db->escape($keyword).'%" 
                    AND visible=1 
		    ORDER BY p.name LIMIT ?', $limit);

на этот

 

$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 "%'.$simpla->db->escape($keyword).'%") 
                    OR (v.sku LIKE "%'.$simpla->db->escape($keyword).'%") 
		    AND visible=1 
		    ORDER BY p.name LIMIT ?', $limit);

и вот этот код

 

foreach($products as $product)
	{
		$suggestion = new stdClass();
		if(!empty($product->image))
			$product->image = $simpla->design->resize_modifier($product->image, 56, 56);
			
		$suggestion->value = $product->name;
		$suggestion->data = $product;
		$suggestions[] = $suggestion;
	}

меняем на этот

 

foreach($products as $product)
	{
		$suggestion = new stdClass();
		if(!empty($product->image))
			$product->image = $simpla->design->resize_modifier($product->image, 56, 56);
			
		if(!empty($product->sku))
			$suggestion->value = $product->name . ' ('.$product->sku.')';
		else
			$suggestion->value = $product->name;
		
		$suggestion->data = $product;
		$suggestions[] = $suggestion;
	}

P.S.  И будет вам счастье...

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

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

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

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

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

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

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

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

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

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