Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 1160 Просмотров
*

Artrum

  • Осваиваюсь на форуме
  • 31
  • 2 / 0
Создал фильтр товара, но фильтрация происходит только по одному введённому значению, а необходимо, чтобы по выбранным нескольким значениям.

Сейчас поиск происходит: Тип одежды: Куртка; Размер XXL. находит либо куртку, либо по размеру, но не находит совместный вариант.

Подскажите пожалуйста, что сделал не так ?

Код формы поиска:
    <?php
    if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
    if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
        require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
    } else {
        require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' );
    }
    global $VM_LANG, $mm_action_url, $sess;
    ?>

    <form action="<?php $sess->purl( $mm_action_url."index.php?page=shop.browse" )?>" method="post">
  
    <table class="pl-1" border="0" cellspacing="0" cellpadding="0" align="left">
    <tbody>
    <tr>
    <td>
    <table style="width: 170px;" border="0" cellspacing="0" cellpadding="0" align="left">
    <tbody>
    <tr>
      <td width="163"><input name="keyword" type="checkbox" value=" 75E" id="keyword" /> 75E</td>
      </tr>
    <tr>
<td width="163"><select class="inputbox" type="checkbox" name="keyword" id="keyword" size="1">
<option value='БюстгальтеÑ?'>БюстгальтеÑ?</option>
<option value='ТÑ?усы'>ТÑ?усы</option>
</select> </td>
    </tr>

    <tr>
      <td><input name="keyword" type="checkbox" value=" 75F" id="keyword" /> 75F</td>
    </tr>
    <tr>
    <td><input name="keyword" type="checkbox" value=" 75G" id="keyword" /> 75G</td>
    </tr>
    <tr>
    <td></td>
    </tr>
    <tr>
    <td align="right"><input class="button" name="Search2" type="submit" value="Найти" /></td>
    </tr>
    </tbody>
    </table>
    </td>
    </tr>
    </tbody>
    </table>
    </form>

Фрагмент кода отвечающего за поиск из shop_browse_queries.php

// This is the "normal" search
if( !empty($keywordArr) ) {
   $sq = "(";
   $numKeywords = count( $keywordArr );
   $i = 1;
   foreach( $keywordArr as $searchstring ) {
      $sq .= "\n (`#__{vm}_product`.`product_name` LIKE '%$searchstring%' OR ";
        $sq .= "\n `#__{vm}_product`.`attribute` LIKE '%$searchstring%' OR ";
      $sq .= "\n `#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
      $sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%') ";
   
      if( $i++ < $numKeywords ) {
         $sq .= "\n  AND ";
      }
   }
   $sq .= ")";
   $where_clause[] = $sq;
}   
// Process the advanced search
elseif( !empty($keyword1Arr) ) {
   $sq = "(";
   $numKeywords = count( $keyword1Arr );
   $i = 1;
   foreach( $keyword1Arr as $searchstring ) {
      switch($search_limiter) {
         case "name":
         $sq .= "\n `#__{vm}_product`.`product_name` LIKE '%$searchstring%' ";
         break;
      case "cp":
         $sq .= "\n `#__{vm}_product`.`product_url` LIKE '%$searchstring%' ";
         break;
      case "desc":
         $sq .= "\n (`#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
         $sq .= "\n `#__{vm}_product`.`attribute` LIKE '%$searchstring%')' OR ";
         $sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%')";
         break;
      default:
         $sq .= "\n (`#__{vm}_product`.`product_name` LIKE '%$searchstring%' OR ";
         $sq .= "\n `#__{vm}_product`.`attribute` LIKE '%$searchstring%') OR ";
         $sq .= "\n `#__{vm}_product`.`product_url` LIKE '%$searchstring%' OR ";
         $sq .= "\n `#__{vm}_category`.`category_name` LIKE '%$searchstring%' OR ";
         $sq .= "\n `#__{vm}_product`.`product_sku` LIKE '%$searchstring%' OR ";
         $sq .= "\n `#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
         $sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%') ";
      }
      if( $i++ < $numKeywords ) {
         $sq .= "\n  AND ";
      }
   }
   $sq .= ") ";
   // KEYWORD 2 TO REFINE THE SEARCH
   if ( !empty($keyword2Arr) ) {
      $search_op= strtoupper(vmGet( $_REQUEST, 'search_op', 'AND' )) == 'AND' ? 'AND' : 'AND NOT';
      $sq .= "\n $search_op (";
      $numKeywords = count( $keyword2Arr );
      $i = 1;
      foreach( $keyword2Arr as $searchstring ) {
         switch($search_limiter) {
            case "name":
            $sq .= "\n `#__{vm}_product`.`product_name` LIKE '%$searchstring%' ";
            break;
         case "cp":
            $sq .= "\n `#__{vm}_product`.`product_url` LIKE '%$searchstring%' ";
            break;
         case "desc":
            $sq .= "\n (`#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
             $sq .= "\n `#__{vm}_product`.`attribute` LIKE '%$searchstring%') ";
            $sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%')";
            break;
         default:
            $sq .= "\n (`#__{vm}_product`.`product_name` LIKE '%$searchstring%' OR ";
              $sq .= "\n `#__{vm}_product`.`attribute` LIKE '%$searchstring%')' OR ";
            $sq .= "\n `#__{vm}_product`.`product_url` LIKE '%$searchstring%' OR ";
            $sq .= "\n `#__{vm}_category`.`category_name` LIKE '%$searchstring%' OR ";
            $sq .= "\n `#__{vm}_product`.`product_sku` LIKE '%$searchstring%' OR ";
            $sq .= "\n `#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
            $sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%')";
         }
         if( $i++ < $numKeywords ) {
            $sq .= "\n  AND ";
         }
      }
      $sq .= "\n ) ";
   }
   $where_clause[] = $sq;
}
« Последнее редактирование: 17.01.2012, 13:35:38 от Artrum »
*

Artrum

  • Осваиваюсь на форуме
  • 31
  • 2 / 0
Очень нужно! Готов заплатить за помощь в реализации, в разумных пределах, предложения в приват. Готовые решения c "Свойствами товара" не подходят. Так как мне нужен фильтр именно из БД, а свойства товара проставляются вручную и автоматически не обновляются.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Чебокс "Показывать только товары, которые есть в наличии"

Автор artMelnikov

Ответов: 20
Просмотров: 7165
Последний ответ 28.06.2017, 11:19:51
от OutLaw1
Исправить подтягивание значений контактов клиента из базы SQL

Автор Nessy74

Ответов: 5
Просмотров: 880
Последний ответ 31.12.2015, 07:05:16
от Филипп Сорокин
Вывод товара из дочерних категорий в родительскую

Автор B0nG

Ответов: 0
Просмотров: 1479
Последний ответ 03.08.2014, 15:13:57
от B0nG
ID товара вместо cdata

Автор newsky

Ответов: 0
Просмотров: 1315
Последний ответ 01.07.2014, 13:05:12
от newsky
Расширенный Ajax-поиск по характеристикам товара VirtueMart

Автор Arkadiy

Ответов: 990
Просмотров: 196039
Последний ответ 27.06.2014, 16:47:52
от DeLight