Joomla 1.5 Создание фильтров по полям из базы VirtueMart

Тема в разделе "Магазины, электронная коммерция", создана пользователем avantis, 26.11.2008.

  1. avantis
    Offline

    avantis Недавно здесь

    Регистрация:
    09.06.2007
    Сообщения:
    58
    Симпатии:
    2
    Суть.
    Задался желанием создать фильтры для сортировки товаров по определенным полям из базы данных.

    К примеру есть поле product_name, у меня это поле не заполняется, а выбирается из выпадающего списка, (телевизор, ноутбук, стиральная машина, холодильник и т.д.) подскажите код модуля который будет давать возможность выбрать из выпадающего списка к примеру вывод всех товаров с таким именем.

    У меня есть модуль быстрого перехода к товару из категории в которой вы находитесь.
    Код следующий:

    <?php
    defined('_VALID_MOS') or die('Restricted access');
    global $mosConfig_offset, $mosConfig_live_site, $Itemid;
    //setup Itemid
    $query = "SELECT id" . "\n FROM #__menu" . "\n WHERE type = 'components'" . "\n AND link LIKE '%com_virtuemart%'";
    $database->setQuery($query);
    $Itemid = $database->loadResult();
    $catid = $_GET['category_id'];
    if ( $catid != '' )
    {
    $query = "SELECT a.product_id, a.product_name, a.product_sku, b.category_id FROM jos_vm_product AS a, jos_vm_product_category_xref AS b WHERE b.category_id = '". $catid ."' AND a.product_id = b.product_id AND a.product_publish = 'Y' ORDER BY a.product_name";
    }
    $database->setQuery($query);
    $rows = $database->loadObjectList();
    $c = count($rows);
    if( $c > 0 )
    {
    ?>
    <br />
    <select name="product" onchange="window.location=value;">
    <option selected value="">Быстрый переход: выберите товар из списка
    <?php
    foreach ($rows as $row)
    {
    $link = sefRelToAbs('index.php?page=shop.product_details&flypage=shop.flypage&product_id='. $row->product_id .'&category_id='. $row->category_id .'&option=com_virtuemart&Itemid='. $Itemid);
    echo '<option value="'. $link .'">'. $row->product_name .' - '. $row->product_sku;
    }
    ?>
    </select>
    <?php } ?>

    Подсобите на примере научиться создавать необходимые фильтры.
     
  2.  
  3. Offline

    morph Пользователь

    Регистрация:
    05.04.2007
    Сообщения:
    158
    Симпатии:
    10
    Пол:
    Мужской
    $query = "SELECT distinct a.manufacturer_id,a.mf_name FROM #__{vm}_manufacturer AS a ";
    if (!empty( $category_id ) ) {
    $query .= ", #__{vm}_product_category_xref AS d, "
    . " #__{vm}_product AS b, "
    . " #__{vm}_product_mf_xref AS c "
    . " WHERE d.category_id='$category_id'"
    . " AND d.product_id = b.product_id AND b.product_publish='Y' "
    . " AND b.product_id = c.product_id AND c.manufacturer_id = a.manufacturer_id ";
    }
    $query .= "ORDER BY mf_name ASC";
    $db = new ps_DB;
    $db->query( $query );

    $res = $db->record;

    ?>
    <select class="inputbox" name="manufacturer_id" onchange="order.submit()">
    <option value="">Выбрать производителя</option>
    <?php
    foreach ($res as $manufacturer) {
    $selected = '';
    if( @$_REQUEST['manufacturer_id'] == $manufacturer->manufacturer_id ) {
    $selected = 'selected="selected"';
    }
    echo "<option value=\"".$manufacturer->manufacturer_id ."\" $selected>". $manufacturer->mf_name ."</option>\n";

    }
    ?>
    </select>
    отбор по производителю - подточи хоть под че.
     
  4. avantis
    Offline

    avantis Недавно здесь

    Регистрация:
    09.06.2007
    Сообщения:
    58
    Симпатии:
    2
    К примеру у меня есть поле product_brands или product_country_production (поля создавались дополнительно) - напиши полный код который будет выводить выпадающим списком данные без учета категории в которой находишься. При выборе из списка выводятся все товары имеющие выбранный параметр.

    Добавлено через 1 час 47 минут
    Полный код должен так выглядеть?

    В этом случае список производителей выводиться, но при выборе производителя товары не выводятся.
     
    Последнее редактирование: 26.11.2008
  5. Offline

    morph Пользователь

    Регистрация:
    05.04.2007
    Сообщения:
    158
    Симпатии:
    10
    Пол:
    Мужской
    я для 1.0.* в shop.browse.php код давал. Для 1.1.* не смотрел пока.но логика запроса впринципе одинакова.
     
  6. avantis
    Offline

    avantis Недавно здесь

    Регистрация:
    09.06.2007
    Сообщения:
    58
    Симпатии:
    2
    Понял Спасибо.
     
  7. Offline

    Animatik Недавно здесь

    Регистрация:
    27.11.2008
    Сообщения:
    18
    Симпатии:
    0
    Пол:
    Мужской
    morph, А кроме shop.browse.php, куда еще надо вносить изменения?

    И какие изменения вносить чтобы настроить фильтр по цене?
     
  8. Offline

    morph Пользователь

    Регистрация:
    05.04.2007
    Сообщения:
    158
    Симпатии:
    10
    Пол:
    Мужской
    Если фильтрация по новым полям,или по специфичным,ты прав, правкой только файла где вывод отбора не обойтись(если передовать запрос прямо в shop.browse.php) - для этого в виртуе есть файлик shop_browse_queries.php где обрабатываются запросы - там добавлять нужные тебе.
    По поводу фильтра по цене-что именно должно там быть?-цена "от" и "до"? - 2 выхода: или добавлять свои инпуты и запрос в shop_browse_queries.php. или ... есть уже отбор))) - отбор по цене появляеться в расширенном выборе характеристик(когда созданы типы и по ним можно отбор делать:
    shop.parameter_search_form.php:
    ;)
     
  9. Offline

    Animatik Недавно здесь

    Регистрация:
    27.11.2008
    Сообщения:
    18
    Симпатии:
    0
    Пол:
    Мужской
    morph, спасибо, но если не сложно, что подправить в shop_browse_queries.php для работы фильтра по вновь созданному полю ?
    (И еще очень важно: я говорю о фильтре, а не сортировщике то есть товары не попавшие под условия выбора вообще не отображаются).
    __________________________
    Joomla 1.0.15+Virtuemart1.0.15
     
    Последнее редактирование: 08.12.2008

Поделиться этой страницей

Загрузка...