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

Тема в разделе "Opencart", создана пользователем kabasik, 2 июн 2014.

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Статус темы:
Закрыта.
Модераторы: ZiX
  1. kabasik

    kabasik Полиционер

    Регистр.:
    15 мар 2012
    Сообщения:
    224
    Симпатии:
    68
    Привет всем. Не могу перепилить модуль, нужна помощь.
    Модуль выводит на странице товара похожие товары, по цене, или по категории.
    Нужно сделать так чтобы выводились товары в низу по по столюбцу в БД или же по столбцу 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;
        }
    }
     

    Вложения:

  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.549
    Симпатии:
    1.436
    По логике как-то так:
    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.
     
    kabasik нравится это.
  3. kabasik

    kabasik Полиционер

    Регистр.:
    15 мар 2012
    Сообщения:
    224
    Симпатии:
    68
    Как всегда :ay:- upc = ucp
     
Статус темы:
Закрыта.