Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


l.slava

Recommended Posts

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

Надіслати
Поділитися на інших сайтах


  • 7 months later...

Сделал так: в файле 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 weeks later...

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

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

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

Спасибо

Надіслати
Поділитися на інших сайтах


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

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

Спасибо

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

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 months later...
  • 7 months later...

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

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

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

$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 year later...

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

Надіслати
Поділитися на інших сайтах


  • 10 months later...

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.