OC 1.5.x Filterpro Mega нужна помощь

Тема в разделе "Модули и дополнения", создана пользователем user13, 30 апр 2015.

  1. user13

    user13 Новичок

    Сообщения:
    2
    Симпатии:
    0
    в модуле filterpro mega идет вывод опций
    public function getOptions($data) {

    $sql = "SELECT DISTINCT ovd.option_value_id, ovd.*, od.name as
    'option_name', ov.image FROM `" . DB_PREFIX .
    "option_value_description` ovd
    LEFT JOIN " . DB_PREFIX . "option_value ov
    ON(ovd.option_value_id=ov.option_value_id)
    LEFT JOIN " . DB_PREFIX . "option_description od
    ON(ov.option_id=od.option_id)
    LEFT JOIN `" . DB_PREFIX . "option` o ON(ov.option_id=o.option_id)
    LEFT JOIN " . DB_PREFIX . "product_option_value pov
    ON(ovd.`option_value_id`=pov.`option_value_id`)
    LEFT JOIN " . DB_PREFIX . "product p ON(pov.product_id = p.product_id)";
    if($data['category_id']) {
    $sql .= "LEFT JOIN " . DB_PREFIX . "product_to_category p2c
    ON(p.product_id = p2c.product_id) ";
    }
    $sql .= " WHERE p.status = '1'";


    if($data['category_id']) {
    $sql .= " AND p2c.category_id = '" . (int)$data['category_id'] . "'";
    }


    if($data['manufacturer_id']) {
    $sql .= " AND p.manufacturer_id = '" . (int)$data['manufacturer_id'] . "'";
    }
    $sql .= " ORDER BY o.sort_order, ov.sort_order, ovd.option_id ";
    $query = $this->db->query($sql);
    $options = array();
    foreach($query->rows as $row) {
    if(!isset($options[$row['option_id']])) {
    $options[$row['option_id']] = array('option_id' => $row['option_id'],
    'name' => $row['option_name'],
    'option_values' => array());
    }

    $options[$row['option_id']]['option_values'][] =
    array('option_value_id' => $row['option_value_id'], 'name' =>
    $row['name'], 'image' => $row['image']);
    }
    return $options;

    }


    а это вывод продуктов по опциям

    public function getProducts($data) {
    $customer_group_id = $this->getCustomerGroup();

    $cache = md5(http_build_query($data));

    $product_data = $this->cache->get('product.total.' .
    (int)$this->config->get('config_language_id') . '.' .
    (int)$this->config->get('config_store_id') . '.' .
    (int)$customer_group_id . '.' . $cache);
    if (empty($product_data)) {
    $sql = "SELECT product_id FROM(";
    $sql .= "SELECT DISTINCT p.product_id, pd.name, p.model, p.sort_order";

    $sql .= ", coalesce((SELECT price FROM " . DB_PREFIX .
    "product_discount pd2 WHERE pd2.product_id = p.product_id ORDER BY
    pd2.priority ASC, pd2.price ASC LIMIT 1), " .
    "(SELECT price FROM " . DB_PREFIX . "product_special ps WHERE
    ps.product_id = p.product_id ORDER BY ps.priority ASC, ps.price ASC
    LIMIT 1), " .
    "p.price) as realprice ";
    $sql .= "FROM " . DB_PREFIX . "product p" .
    " LEFT JOIN " . DB_PREFIX . "product_option_value pov ON
    (pov.product_id=p.product_id)" .
    " LEFT JOIN " . DB_PREFIX . "product_description pd ON
    (pd.product_id=p.product_id)" .
    " LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON
    (p2c.product_id=p.product_id)";

    $sql .= " WHERE 1";


    if($data['categories']) {
    $sql .= " AND p2c.category_id IN (" . implode(",",
    $data['categories']) . ")";
    }

    if($data['option_value']){
    foreach($data['option_value'] as $option_value){
    foreach ($option_value as $option){

    $sql .= " AND option_value_id = '".$option."'";

    }
    }
    }

    вот собственно из-за этого $sql .= " AND option_value_id =
    '".$option."'"; сейчас выводит только по одной опции, если выбираю две
    то не выводит.

    Т.е. хочу сделать чтобы при второй отмеченной опции выводился товар из уже имеющихся товаров по первой опции
     
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    3.158
    Симпатии:
    874
    Вы сами то верите что вам помогут?
    Код не оформлен. Скринов нету. Задача не из легких. Модуль стоит не у каждого.
    Бесплатно вникать в модуль, который не у каждого есть под рукой?
    И у которого в принципе есть вменяемая платная поддержка!
     
  3. Slait

    Slait Эксперт

    Сообщения:
    503
    Симпатии:
    452
    В настройках модуля выберите условие "И"
     
  4. user13

    user13 Новичок

    Сообщения:
    2
    Симпатии:
    0
    «И» дает такой же результат что и «Или»