Поиск по цене, для Ubercart.

Главные вкладки

Аватар пользователя dkslalkasdlsa dkslalkasdlsa 18 сентября 2008 в 1:46

Вообщем мудрил, крутил и наконецто вымудрил.

Задача была сделать поиск по каталогу магазина, но не прастой поиск а по ценам.

Функции поиска:

1) Текстовое поле, ищет по имени товар.
2) Цифровое выпадающее поле, ищет товары до 500 рублей до 1000 и до 1500.

Выглядит это вот так:

В работе:

Реализовал с помощью модуля
Views FastSearch

Экспорт вида он же Views

  $view = NEW stdClass();
  $view->name = 'price_search';
  $view->description = 'Price Range Search';
  $view->access = array (
);
  $view->view_args_php = '';
  $view->page = TRUE;
  $view->page_title = 'Поиск по каталогу';
  $view->page_header = '';
  $view->page_header_format = '1';
  $view->page_footer = '';
  $view->page_footer_format = '1';
  $view->page_empty = '';
  $view->page_empty_format = '1';
  $view->page_type = 'node';
  $view->url = 'view/price_search';
  $view->use_pager = TRUE;
  $view->nodes_per_page = '10';
  $view->sort = array (
    array (
      'tablename' => 'uc_products',
      'field' => 'sell_price',
      'sortorder' => 'ASC',
      'options' => '',
    ),
  );
  $view->argument = array (
  );
  $view->FIELD = array (
  );
  $view->FILTER = array (
    array (
      'tablename' => 'node',
      'field' => 'title',
      'operator' => 'allwords',
      'options' => '',
      'value' => '',
    ),
    array (
      'tablename' => 'node',
      'field' => 'status',
      'operator' => '=',
      'options' => '',
      'value' => '1',
    ),
    array (
      'tablename' => 'uc_products',
      'field' => 'sell_price',
      'operator' => '<',
      'options' => '',
      'value' => '500',
    ),
    array (
      'tablename' => 'uc_products',
      'field' => 'sell_price',
      'operator' => '<',
      'options' => '',
      'value' => '500',
    ),
    array (
      'tablename' => 'uc_products',
      'field' => 'sell_price',
      'operator' => '<',
      'options' => '',
      'value' => '1000',
    ),
  );
  $view->exposed_filter = array (
    array (
      'tablename' => 'node',
      'field' => 'title',
      'label' => '',
      'optional' => '0',
      'is_default' => '1',
      'operator' => '1',
      'single' => '0',
    ),
    array (
      'tablename' => 'uc_products',
      'field' => 'sell_price',
      'label' => '',
      'optional' => '0',
      'is_default' => '1',
      'operator' => '0',
      'single' => '0',
    ),
  );
  $view->requires = array(uc_products, node);
  $views[$view->name] = $view;

В бонус, сам поиск РАЗМЕСТИТЬ В ЛЮБОМ УДОБНОМ МЕСТЕ ШАБЛОНА page.tpl.php

<form action="http://Ваш сайт/view/price_search"  accept-charset="UTF-8" method="get" id="views-filters">
<div><div class="tablewrapper"><table width="272" class="tableclass">
 <thead></thead>
<tbody>
 <tr class="odd">
   <td width="32"><img src='/img/imsearch.gif'></td>
   <td width="66"><div class="form-item">
</div>
<div class="form-item">
  <input type="text" maxlength="255" name="filter0" id="edit-filter0"  size="11" value="" class="form-text" />
</div>
</td><td width="110"><div class="form-item">
</div>
<div class="form-item">
  <select name="filter1" id="edit-filter1" style="width: 65px; height:24px;">
    <option value=" "> </option>
    <option value="500">500</option>
    <option value="1000">1000</option>
    <option value="1500">1500</option>
  </select>
</div>
</td><td width="44"><input type="image" src="/img/search.gif" id="edit-submit" value=""  class="form-submit" />
</td> </tr>
</tbody></table>
</div>

</div></form>

Комментарии

Аватар пользователя ru.SLON ru.SLON 10 января 2009 в 19:14

Спасибо! Очень пригодится!
Как раз делать надо будет выборку выкладывать "до 1000", "до 3000" и т.д.
А какой вы сайт делали?