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

Список производителей. Вывод списка категорий в которых есть товары выбранного производителя.


m4reve

Recommended Posts

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

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


Ну, перекрестные запросы и все такое. Это достаточно ресурсоемкие запросы должны получиться, так что без кэширования не обойтись.

По подробнее можете рассказать? 

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


Код не проверял, но должен работать. Готовая функция для получения списка категорий у производителя с кэшированием:

public function getManufacturerCategories($manufacturer_id)
{
    
    $cache_name = 'manufacturer.categories';
    
    $cached = $this->cache->get($cache_name);

    if ($cached && isset($cached[$manufacturer_id])) {
    
        return $cached[$manufacturer_id];
    
    } else {
        
        $query = $this->db->query("
        SELECT 
            DISTINCT c.category_id, cd.name
        FROM
        " . DB_PREFIX . "manufacturer m 
            LEFT JOIN " . DB_PREFIX . "product p ON (m.manufacturer_id = p.manufacturer_id)
            LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p2c.product_id = p.product_id)
            LEFT JOIN " . DB_PREFIX . "category c ON (c.category_id = p2c.category_id)
            LEFT JOIN " . DB_PREFIX . "category_description cd ON (cd.category_id = p2c.category_id)
        WHERE
            p.status = 1
            AND m.manufacturer_id = '" . (int) $manufacturer_id . "'
            AND c.status= 1
        ");
        
        $cached[$manufacturer_id] = $query->rows;
        
        $this->cache->set($cache_name, $cached);
        
        return $query->rows;
    }
}
 

Без

public function getManufacturerCategories($manufacturer_id)
{

    $query = $this->db->query("
    SELECT 
        DISTINCT c.category_id,cd.name
    FROM
    " . DB_PREFIX . "manufacturer m 
        LEFT JOIN " . DB_PREFIX . "product p ON (m.manufacturer_id = p.manufacturer_id)
        LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p2c.product_id = p.product_id)
        LEFT JOIN " . DB_PREFIX . "category c ON (c.category_id = p2c.category_id)
        LEFT JOIN " . DB_PREFIX . "category_description cd ON (cd.category_id = p2c.category_id)
    WHERE
        p.status = 1
        AND m.manufacturer_id = '" . (int) $manufacturer_id . "'
        AND c.status= 1
    ");
    
    return $query->rows;
}
Надіслати
Поділитися на інших сайтах

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

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

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

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

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

Вхід

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

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

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

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

Important Information

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