定制 jlchassaing/facetbundle 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

jlchassaing/facetbundle

Composer 安装命令:

composer require jlchassaing/facetbundle

包简介

GieFacetBundle helps is a set of helpers to create search Facets, and perform sorl queries with those facets

README 文档

README

Build Status Code Coverage Latest stable License

Gie Facet Bundle

This bundle will help you perform and retreive facet searches.

how to use it

1. Init the facet search helper

In your Controller action just call the gie.facet.search.helper

By default two facet search helpers are set in this bundle :

  • the ContentTypeFacetSearchHelper who's alias is content_type
  • thie TagsFacetSearchHelper who's alias is tags and is based on the netgen/tagsbundle

after calling the facet search helper, you'll have to call the init method with two parameter :

  • an array with facet FacetConfig objects
  • the current Request

FacetCongig objects are build with the facet helper alias a title and an array of facet parameters

The solr_field facet can facet the query on any solr field defined by the field parameter. The format function can help format the value of user display

The init method will also look at the queryString and init the selected facets. If you don't want it to do so, you can avoid passing it the request object. And then use de setFacetFilters() method to set what ever selected facet you want.

$facetSearchHelper = $this->container->get('gie.facet.search.helper')
                                     ->init(new FacetConfig('Content types', 
                                                             ContentTypeFacetSearchHelper::class,
                                                             [
                                                            'minCount' => 2,
                                                            'limit' => 5,
                                                            ]),
                                            new FacetConfig('Key Words',
                                                             TagFacetSearchHelper::class,
                                                             [
                                                            'minCount' => 1,
                                                            'limit' => 5,
                                                            ]),
                                            new FacetConfig('custom_date',
                                                            'Publication date'),
                                            new FacetConfig('solr_field',
                                                            'Year',
                                                            ['field' => 'meta_year_date_dt',
                                                             'format' => function($value){
                                                             $date = new \DateTime($value);
                                                             return $date->format('Y');}
                                                            ]),
            ], $request);

2. Build query

once done, build your query without any facet or filter condition and pass it down to the facet helper.

 $query = $facetSearchHelper->addQueryFacets($query);

3. get the facet array that will be sent to the template

After updating the query with the facet settings and the filters from the eventually selected facets, you need to call the getFacets method to get the facets array.

1. Using PagerFanta

If you need the PagerFanta tool then you can pass it to the facetHelper.

When using PagerFanta, you'll have to use the bundle ContentSearchAdapter otherwise you won't be able to get the facets from the query beeing executed.

use Gie\FacetBuilder\Pagination\Pagerfanta\ContentSearchAdapter;
$facets = $facetSearchHelper->getFacetsFromPager($pager);

2. From a QueryResult

If you are just using a ContentQuery then you can pass the result to the facetHelper and call the

$facets = $facetHelper->getFacetsFromQuery($queryResult);

4. pass the facets to the template

Last thing you'll have to do is retrieve the facets array that you'll pass to the template to display them as you want.

array:2 [▼
  "Facet Name" => array [▼
    0 => array [▼
      "name" => "Facet Value Name"
      "key" => "facet_generate_key"
      "count" => count 
      "querystring" => "querystring" /* query string to add to the request */
      "selected" => true|false 
    ]
    .../...
  ]
]

统计信息

  • 总下载量: 191
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-06-01

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固