2016-11-23 25 views
0

Я использую SOLR для получения моих граней, все работает нормально, даже запросы фильтра правильны.Граничный поиск/Слоистая навигация, фильтрация результатов

Я борюсь с частью php для отображения фильтра.

Границы выглядят следующим образом с активными фильтрами. Но я хочу, чтобы достичь этих связей ...

Manufacturers 
------------- 
[] BMW (/page?q=cars&manufacturer=Audi&manufacturer=Mercedes&manufacturer=BMW&model=BMW - X5&model=Mercedes - C) 
[x] Audi (/page?q=cars&manufacturer=Mercedes&model=BMW - X5&model=Mercedes - C) 
[x] Mercedes(/page?q=cars&manufacturer=Audi&manufacturer=Mercedes&model=BMW - X5&model=Mercedes - C) 
[] Seat(/page?q=cars&manufacturer=Audi&manufacturer=Mercedes&manufacturer=Seat&model=BMW - X5&model=Mercedes - C) 
[] Skoda (/page?q=cars&manufacturer=Audi&manufacturer=Mercedes&manufacturer=Skoda&model=BMW - X5&model=Mercedes - C)  

Model 
------------- 
[] BMW - E49 (/page?q=cars&manufacturer=Audi&manufacturer=Mercedes&model=BMW - X5&model=Mercedes - Cmodel=BMW - E49) 
[] BMW - X3 (/page?q=cars&manufacturer=Audi&manufacturer=Mercedes&model=BMW - X5&model=Mercedes - C&model=BMW - X3) 
[x] BMW - X5 (/page?q=cars&manufacturer=Audi&manufacturer=Mercedes&model=Mercedes - C) 
[] Mercedes - A (/page?q=cars&manufacturer=Audi&manufacturer=Mercedes&model=Mercedes - C&model=BMW - X5&model=Mercedes - A) 
[] Mercedes - B (/page?q=cars&manufacturer=Audi&manufacturer=Mercedes&model=Mercedes - C&model=BMW - X5&model=Mercedes - B) 
[x] Mercedes - C (/page?q=cars&manufacturer=Audi&manufacturer=Mercedes&model=BMW - X5) 
[] Mercedes - E (/page?q=cars&manufacturer=Audi&manufacturer=Mercedes&model=Mercedes - C&model=BMW - X5&model=Mercedes - E) 
[] Mercedes - S (/page?q=cars&manufacturer=Audi&manufacturer=Mercedes&model=Mercedes - C&model=BMW - X5&model=Mercedes - S) 

У меня возникают большие трудности, чтобы получить текущие активные выборы, и когда я нажимаю на уже выбранном элементе, чтобы удалить его из строки URL.

Функция, которую я использую для получения строки запроса.

function getFilter() { 
    $query = explode('&', $_SERVER['QUERY_STRING']); 
    $params = array(); 

    foreach($query as $param) { 
     list($name, $value) = explode('=', $param); 
     $params[urldecode($name)][] = urldecode($value); 
    } 

    return $params; 
} 

выше функция дает мне что-то вроде этого:

(
    [q] => Array 
     (
      [0] => cars 
     ) 

    [manufacturer] => Array 
     (
      [0] => Audi 
      [1] => Mercedes 
     ) 

    [model] => Array 
     (
      [0] => BMW - X5 
      [1] => Mercedes - C 
     ) 

) 

После этого я буду стараться, чтобы получить выбранные элементы и удалить их, если в цикле фасета значение равно один аспект, но я не могу обернуть вокруг себя голову.

foreach($newFacetArray as $val => $count) { 
    if(strlen($val) != 0) { 
     if(isset($activeFilters[$value])) { 
      if(in_array($val,$activeFilters[$value])) { 
       foreach($activeFilters[$value] as $af) { 
        if($af == $val) { 
         $as = array_search($val,$activeFilters[$value]); 
         unset($activeFilters[$value][$as]); 
        } else { 
         if($af != $val) { 
          $activeFilters[$value][] = $val; 
         } 
        } 
       } 
      } 
     } 

     $url = http_build_query($activeFilters); 
     #$url = $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'].'&'.(($value == 'manufacturerName')?$value.'[]':$value).'='.$val; 

     echo '<li class="list-group-item"><a class="attribute-loader" href="'.$url.'"><input type="checkbox" name="'.$value.'" '.$facetSearch->verifyIfChecked($_GET,$val).'/> ' . $val . ' <span class="pull-right">'.$count.'</span></a></li>'; 
    } 
} 

ответ

0

Получил решение, это было немного сложно, но мне удалось заставить его работать для любого динамического аспекта.

 Смежные вопросы

  • Нет связанных вопросов^_^