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

поиск товара по n-фильтрам одновременно


Recommended Posts

мне надо найти товар который 100% имеет в связях 2 конкретных фильтра
напрмер товар авто
фильтр красный (filter_id =7)
фильтр пикап (filter_id = 25)

поиск товаров происходит в \catalog\model\catalog\product.php
public function getProducts($data = array()) {
...
$sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")";
тоесть с моими данными это
$sql .= " AND pf.filter_id IN (7,25)";

оно мне выдает все красные и все пикапы
мне ненадо все а только красные пикапы

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


как всегда сам додумал
но если кому надо будет то сделал
<file path="catalog/model/catalog/product.php">
<operation>
            <search><![CDATA[
                $filters = explode(',', $data['filter_filter']);
            ]]></search>
            <add position="replase" offset="6"><![CDATA[    
                $filters = explode(',', $data['filter_filter']);
                if (count($filters)<2) {$sql .= " AND pf.filter_id = $filters[0] ";} else {
                $sql .= " AND p.product_id in (SELECT product_id FROM " . DB_PREFIX . "product_filter WHERE filter_id = '". $filters[0] ."'";
                for ($i=1; $i<count($filters); $i++)
                    {$sql .= " AND product_id IN (SELECT product_id FROM " . DB_PREFIX . "product_filter WHERE filter_id = '".$filters[$i]."' ) ";}
                $sql .= ')';
                }
            ]]></add>
        </operation>
        
        <operation>
            <search><![CDATA[
                if (!empty($data['filter_name']) || !empty($data['filter_tag'])) {
            ]]></search>
            <add position="before" offset ="2"><![CDATA[    
                } else {
                    if (!empty($data['filter_filter'])) {
                        $implode = array();
                        $filters = explode(',', $data['filter_filter']);
                        if (count($filters)<2) {
                            $sql .= " AND pf.filter_id = $filters[0] ";
                        } else {
                            $sql .= " AND p.product_id in (SELECT product_id FROM " . DB_PREFIX . "product_filter WHERE filter_id = '". $filters[0] ."'";
                            for ($i=1; $i<count($filters); $i++) {
                                $sql .= " AND product_id IN (SELECT product_id FROM " . DB_PREFIX . "product_filter WHERE filter_id = '".$filters[$i]."' ) ";
                            }
                            $sql .= ')';
                        }
                    }
            ]]></add>
        </operation>
</file>
думаю если кому надо будет тот разберет код

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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