简体   繁体   English

分面搜索/分层导航,结果过滤

[英]Faceted search / Layered navigation, result filtering

I'm using SOLR for getting my facets, everything works fine, even the filter queries are correct. 我正在使用SOLR进行测试,一切工作正常,即使过滤器查询正确。

I am struggling with the php part for the filter display. 我正在努力为过滤器显示的PHP部分。

The facets look like this with the active filters. 具有活动滤镜的构面看起来像这样。 But I want to achieve these links... 但我想实现这些链接...

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)

I am having great difficulties to get the current active selections and when I click on the already selected item, to remove it from the url string. 我很难获得当前的活动选择,当我单击已经选择的项目时,要将其从url字符串中删除。

Function I use to get the query string. 我用来获取查询字符串的函数。

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;
}

The above function gives me something like this: 上面的函数给我这样的东西:

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

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

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

)

After that I'll try to get the selected items and remove them if in the facet loop the value equals one facet, but I can't wrap my head around it. 之后,如果值在facet循环中等于一个facet,我将尝试获取选定的项目并将其删除,但是我无法将其包裹在头上。

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>';
    }
}

解决了它,有点困难,但是我设法使它适用于任何动态方面。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM