Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

модуль похожие товары


l.slava
 Поделиться

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

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

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


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

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


А что мешает в рекомендуемые засунуть похожие товары? или я чет не так понял.

Сто товаров можно сделать руками, а 50 тыс. руками врядли.
Ссылка на комментарий
Поделиться на других сайтах


  • 7 месяцев спустя...

Сделал так: в файле catalog/model/catalog/product.php

в function getProductRelated сделал не которые изменения:

		$product_data = array();

		//$product_related_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'");
                // add
                $add="";
                $temp= $this->db->query("SELECT	name FROM " . DB_PREFIX . "product_description WHERE product_id='" . (int)$product_id . "' AND language_id='" . (int)$this->config->get('config_language_id') . "';");
                $parts = explode( ' ',trim($temp->row['name']));
                foreach( $parts as $part ) {
                             if (strlen($part)>4) {
				$add .= ' OR LOWER(name) LIKE "%'.$this->db->escape(strtolower(trim($part))).'%" ';
                             }
		}
                $add = substr( $add, 4 );$add="( $add )";
                $product_related_query =$this->db->query("SELECT pd.product_id as related_id FROM " . DB_PREFIX . "product_description AS pd
                                LEFT JOIN " . DB_PREFIX . "product AS p ON p.product_id = pd.product_id
				LEFT JOIN " . DB_PREFIX . "product_to_store AS p2s ON p2s.product_id = pd.product_id
				WHERE $add AND p.status = 1 AND pd.product_id<>'" . (int)$product_id . "' AND p.quantity>'0'
				AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "'
				AND p2s.store_id =  '" . (int)$this->config->get('config_store_id') . "' GROUP BY  pd.product_id LIMIT 4;");

                // add
		
		foreach ($product_related_query->rows as $result) {

Подбирает автоматом похожие товары.

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


  • 3 недели спустя...

Добрый день! Скрипт замечательный. Но хотелось бы уточнить. Как сделать чтобы товары определялись не по имени а по модели.

Заранее спасибо.

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


Доброго времени! Модификация работает, спасибо! Мне нужно немного видоизменить результат. Сейчас Рекомендуемые товары имеют ссылку /index.php?route=product/product&product_id=69 У меня эти ссылки закрыты от индексации в robot.txt Нужно что бы товары выводились по ссылке /index.php?route=product/product&path=128_131&product_id=69 т.е. по пути - категория/подкатегория/товар. Что нужно изменить в запросе? Заранее спасибо за ответ.

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


Доброго времени! Модификация работает, спасибо! Мне нужно немного видоизменить результат. Сейчас Рекомендуемые товары имеют ссылку /index.php?route=product/product&product_id=69 У меня эти ссылки закрыты от индексации в robot.txt Нужно что бы товары выводились по ссылке /index.php?route=product/product&path=128_131&product_id=69 т.е. по пути - категория/подкатегория/товар. Что нужно изменить в запросе? Заранее спасибо за ответ.

Обновится до последней версии, включить SEO URL и не прописывать псевдонимы.
Ссылка на комментарий
Поделиться на других сайтах

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

  • 2 месяца спустя...

Спасибо за код, очень искал что-то в этом направлении.

Есть идеи, как изменить код, что бы товары подбирались из той же категории, что и товар?

Спасибо

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


Спасибо за код, очень искал что-то в этом направлении.

Есть идеи, как изменить код, что бы товары подбирались из той же категории, что и товар?

Спасибо

Добавил ещё один джоин,

LEFT JOIN " . DB_PREFIX . "product_to_category AS p2c ON p2c.category_id in (select category_id from " . DB_PREFIX . "product_to_category where " . DB_PREFIX . "product_to_category.product_id = p.product_id)

страница стала грузиться 10 секунд... Не подходит. Неужели такой тяжелый запрос получается?

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


  • 8 месяцев спустя...
  • 7 месяцев спустя...

Подскажите, а то я уже запутался - на странице товара есть вкладка "Похожие товары", откуда она взялась уже не помню, может вставлял код дополнительно, ведь я так понимаю это не стандартный функционал.

В модулях - похожих товаров нет. В настройках магазина тоже ничего подобного не нашел. В файле catalog/model/catalog/product.php функция getProductRelated выглядит так:

public function getProductRelated($product_id) {
 $product_data = array();
 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");

 foreach ($query->rows as $result) {
  $product_data[$result['related_id']] = $this->getProduct($result['related_id']);
 }

 return $product_data;
}

Вопрос - где меняется кол-во выводимых похожих товаров?

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


эти товары задаются в настройках конкретного товара на вкладке "связи".

а их количество "цифрами" не задается: сколько добавите "связанных" товаров - столько и будет отображаться.

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

afwollis, спасибо за ответ! Нашел, откуда у меня "лезут" эти похожие товары. Есть vqmod следующего содержания:

<modification>
<id>Automatic Relate</id>
<version>1.0.1</version>
<vqmver>2.1</vqmver>
<author>Palcet</author>
<file name="catalog/model/catalog/product.php">
 <operation>
  <search position="after">
  <![CDATA[
  $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
  ]]>
  </search>
  <add>
  <![CDATA[
  if($query->num_rows==0)
 {
  $sql="  select *,p.product_id as related_id  from " . DB_PREFIX . "product p  LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) where p.product_id in   (select product_id from " . DB_PREFIX . "product_to_category  where category_id in  (SELECT category_id FROM " . DB_PREFIX . "product_to_category where product_id=".(int)$product_id."))  AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' limit 15";

  $query = $this->db->query($sql);

 }
  ]]>
  </add>
 </operation>
</file>
</modification>

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

По поводу ограничения кол-ва вывода - поменял в конце limit 15 на нужный. Вопрос снят :)

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


  • 3 недели спустя...

Всем привет. Очень нужная тема. Но не могу разобраться! Помогите, пожалуйста. Когда вставляю код

$product_data = array();
			//$product_related_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'");
			// add
			$add="";
			$temp= $this->db->query("SELECT name FROM " . DB_PREFIX . "product_description WHERE product_id='" . (int)$product_id . "' AND language_id='" . (int)$this->config->get('config_language_id') . "';");
			$parts = explode( ' ',trim($temp->row['name']));
			foreach( $parts as $part ) {
						 if (strlen($part)>4) {
							$add .= ' OR LOWER(name) LIKE "%'.$this->db->escape(strtolower(trim($part))).'%" ';
						 }
			}
			$add = substr( $add, 4 );$add="( $add )";
			$product_related_query =$this->db->query("SELECT pd.product_id as related_id FROM " . DB_PREFIX . "product_description AS pd
							LEFT JOIN " . DB_PREFIX . "product AS p ON p.product_id = pd.product_id
							LEFT JOIN " . DB_PREFIX . "product_to_store AS p2s ON p2s.product_id = pd.product_id
							WHERE $add AND p.status = 1 AND pd.product_id<>'" . (int)$product_id . "' AND p.quantity>'0'
							AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "'
							AND p2s.store_id =  '" . (int)$this->config->get('config_store_id') . "' GROUP BY  pd.product_id LIMIT 4;");
			// add

			foreach ($product_related_query->rows as $result) {

То выскакивает ошибка Parse error: syntax error, unexpected T_PUBLIC

А этот и вовсе не знаю куда тулить

<modification>
<id>Automatic Relate</id>
<version>1.0.1</version>
<vqmver>2.1</vqmver>
<author>Palcet</author>
<file name="catalog/model/catalog/product.php">
 <operation>
  <search position="after">
  <![CDATA[
  $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
  ]]>
  </search>
  <add>
  <![CDATA[
  if($query->num_rows==0)
 {
  $sql="  select *,p.product_id as related_id  from " . DB_PREFIX . "product p  LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) where p.product_id in   (select product_id from " . DB_PREFIX . "product_to_category  where category_id in  (SELECT category_id FROM " . DB_PREFIX . "product_to_category where product_id=".(int)$product_id."))  AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' limit 15";

  $query = $this->db->query($sql);

 }
  ]]>
  </add>
 </operation>
</file>
</modification>

Помогите, пожалуйста. А-то руками добавлять сотни похожих товаров очень долго

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


  • 1 год спустя...

Ребята, а как вид изменить? .... Хочу чтобы название было вверху, по центру...Ниже картинка, ещё ниже цена, и в самом низу купить...  Подскажите пожалуйста что и где....

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


  • 10 месяцев спустя...

Разработчики, сделайте пожалуйста универсальный модуль похожих товаров, который будет выводить автоматически указанное количество товаров в блоке "Похожие товары" исходя из названия, описания или каких-то других параметров. Идеальной была бы возможность выводить похожие новости из той же категории и примерно той же цены или производителя. Устанавливать связи для каждого товара вручную это прошлый век. Похожие товары должны на автомате выводится.

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


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.