Перейти к содержанию
l.slava

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

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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

Сделал так: в файле 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) {

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

Доброго времени! Модификация работает, спасибо! Мне нужно немного видоизменить результат. Сейчас Рекомендуемые товары имеют ссылку /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 и не прописывать псевдонимы.

Поделиться сообщением


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

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

Поделиться сообщением


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

Поделиться сообщением


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

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

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

Спасибо

Поделиться сообщением


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

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

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

Спасибо

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

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 секунд... Не подходит. Неужели такой тяжелый запрос получается?

Поделиться сообщением


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

сделал вас джоин, все работает и не долго грузит вроде

Поделиться сообщением


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

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

В модулях - похожих товаров нет. В настройках магазина тоже ничего подобного не нашел. В файле 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 на нужный. Вопрос снят :)

Поделиться сообщением


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

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

$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>

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

Огласите весь список похожести....

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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