Похожие товары по слово в UPC

Статус
В этой теме нельзя размещать новые ответы.

kabasik

Полиционер
Регистрация
14 Мар 2012
Сообщения
226
Реакции
74
Привет всем. Не могу перепилить модуль, нужна помощь.
Модуль выводит на странице товара похожие товары, по цене, или по категории.
Нужно сделать так чтобы выводились товары в низу по по столюбцу в БД или же по столбцу UCP.
Например:
В трех товарах в поле UCP прописано iphone -
Теперь нужно сделать что бы он брал UCP товара () и выводил по нем товары с этим же UCP на странице товара.
Получается как, серия товаров

в аттаче модуль из которого хочу переделать.

Этот код выводит товары из этой же категории, нужно переделать чтобы выводил по UCP ?
Готов скинуть на пиво, или коньяк, тому кто поможет

PHP:
<?php

class ModelModuleSimilar extends Model {

    public function getProductSimilar($product_id,$limit) {

        $this->load->model('catalog/product');

        $product_data = array();

        if($product_id){
            $main_category = ($this->config->get('config_seo_url_type') == 'seo_pro') ? ' AND main_category = 1' : '';
            // находим категорию, в которой **х. товар
            $category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'" . $main_category . "");

            if($category->num_rows){
                $category_id = $category->row['category_id'];
                // делаем выборку товаров из этой же категории, которые следуют после данного товара
                $query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c  ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id > '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit);

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

                if(count($query->rows) < $limit){ // если в категории после товара меньше установленного лимита...
                    $limit = $limit - count($query->rows); // вычисляем разницу и делаем выборку товаров с НАЧАЛА списка, кол-во = разнице
                    $sql = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c  ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id <> '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit);

                    foreach ($sql->rows as $result) {
                        $product_data[$result['product_id']] = $this->model_catalog_product->getProduct($result['product_id']);
                    }
                }
            }
        }

        return $product_data;
    }
}
 

Вложения

  • similar_products.zip
    137,9 KB · Просмотры: 7
По логике как-то так:
PHP:
<?php

class ModelModuleSimilar extends Model {

	public function getProductSimilar($product_id,$limit) {

		$this->load->model('catalog/product');

		$product_data = array();

		if($product_id){
			// находим ucp товара
			$ucp = $this->db->query("SELECT ucp FROM " . DB_PREFIX . "product WHERE product_id = '" .(int)$product_id);

			if($ucp->num_rows){
				// делаем выборку товаров
				$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p WHERE p.status = '1' AND p.date_available <= NOW() AND p.ucp = '" . $this->db->escape($ucp->row['ucp']) . "' ORDER BY p.product_id ASC LIMIT " .(int)$limit);

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

		return $product_data;
	}
}
Предполагаю, что поле ucp в таблице product.
 
Как всегда :ay:- upc = ucp
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху