bitbag/elasticsearch-plugin

BitBag Elasticsearch 插件用于 Sylius。

安装次数: 332,419

依赖项: 1

建议者: 0

安全: 0

星标: 127

关注者: 16

分支: 90

开放问题: 3

类型:sylius-plugin

v4.0.2 2024-06-28 08:14 UTC

README

BitBag SyliusElasticsearchPlugin

Slack Support

我们希望影响许多独特的电子商务项目并在全球范围内建立我们的品牌认知度,因此我们积极参与创建开源解决方案,特别是为 Sylius。我们已创建了超过 35 个扩展,下载量接近 200 万次。

您可以在我们的网站上找到更多有关我们的电子商务服务和技术的信息: https://bitbag.io/。我们还创建了一个专门用于创建插件的服务: https://bitbag.io/services/sylius-plugin-development

您喜欢我们的工作吗?想加入我们吗?请查看 “职业”标签: https://bitbag.io/pl/kariera

关于我们

BitBag 是一家软件公司,提供定制的电子商务平台实施,从创建电子商务平台到实施 PIM 和 CMS 系统,再到开发定制电子商务应用程序,专业 B2B 解决方案,以及从其他平台迁移。

我们积极参与 Sylius 的开发。我们已经完成了 150 多个项目,与全球的客户合作,包括小型企业和大型国际公司。我们为诸如 Mytheresa、Foodspring、Planeta Huerto(Carrefour 集团)、Albeco、Mollie 和 ArtNight 等重要品牌完成了项目。

我们拥有 70 人的专家团队:业务分析师和顾问、电子商务开发者、项目经理和 QA 测试员。

我们的服务

  • B2B 和 B2C 电子商务平台实施
  • 多卖家市场平台实施
  • 电子商务迁移
  • Sylius 插件开发
  • Sylius 咨询
  • 项目维护和长期支持
  • PIM 和 CMS 实施

有关 Sylius 的 BitBag 一些数字

  • 70 位专家
  • +150 个基于 Sylius 的项目交付
  • BitBag 客户来自 30 个国家
  • 在 Sylius 生态系统中有 7 年的时间
  • +35 个为 Sylius 创建的插件

目录

概述

基于 FOSElasticaBundleSyliusElasticsearch 集成。此插件的主要目标是支持在产品列表页面上通过选项、属性、类别、渠道和名称筛选产品。它完全替代了默认的 Sylius sylius_shop_product_index 路由。

此外,该插件具有面向 Sylius 的良好架构,这使得将资源映射到 Elastic 文档更加容易。它也很灵活,因此您可以针对特定的业务需求自定义现有功能。

如果您对这个插件的具体细节感兴趣,请阅读 这篇文章 并观看下面的视频。

安装

有关完整的安装指南,请参阅 此处

需求

此插件需要运行中的Elasticsearch服务器。您可以通过访问官方网站上的说明进行安装。插件仓库中有一个Docker Compose文件,可以用来运行Elasticsearch服务器。

注意:此插件支持7.0及以上版本的Elasticsearch。如果您正在寻找适用于旧版本的Elasticsearch插件,请检查1.x版本的SyliusElasticSearchPlugin。

我们致力于使用稳定、受支持和最新的软件包版本。我们建议您也这样做。

使用

搜索范围

此插件提供全站搜索功能和分类搜索功能。它可以很容易地扩展以添加更多搜索范围。例如,在Marketplace套件中,您可以创建针对特定供应商的搜索范围。

搜索全站产品

商店页面的页眉中有一个搜索栏。

您可以通过覆盖@BitBagSyliusElasticsearchPlugin/Shop/Menu/_searchForm.html.twig模板来轻松修改它,或者通过设置来禁用它:

sylius_ui:
  events:
    sylius.shop.layout.header.content:
      blocks:
        bitbag_es_search_form:
          enabled: false

搜索分类产品

现在,当您进入/{_locale}/products-list/{taxon-slug}页面时,您应该看到一组全新的过滤器。您应该看到如下内容:

您可能还希望将水平菜单引用到新的产品列表页面。按照以下说明进行操作:

  1. 如果您还没有这样做,请创建两个文件
    • templates/bundles/SyliusShopBundle/Taxon目录中创建_horizontalMenu.html.twig
    • templates/bundles/SyliusShopBundle/Product/Show目录中创建_breadcrumb.html.twig
  2. 将这些文件的内容分别粘贴到上述文件中,替换为分别来自vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Resources/views/Taxon/_horizontalMenu.html.twigvendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Resources/views/Product/Show/_breadcrumb.html.twig文件的内容,在两个文件中都将sylius_shop_product_index替换为bitbag_sylius_elasticsearch_plugin_shop_list_products
  3. 使用bin/console cache:clear命令清除缓存。
  4. 🎉

如果您使用的是垂直菜单,请使用_verticalMenu.html.twig文件代替上述步骤。它与_horizontalMenu.html.twig文件位于同一目录。

请注意!Elasticsearch不太擅长处理破折号。此插件依赖于Sylius资源中的代码字段。请在代码字段中使用下划线而不是破折号。

在过滤器菜单中排除选项和属性

您可能不想在菜单中显示某些特定的选项或属性。您可以为此设置特定参数。

parameters:
    bitbag_es_excluded_facet_attributes: ['jeans_material']
    bitbag_es_excluded_facet_options: ['t_shirt_size']

默认情况下,显示所有选项和属性过滤器。

您还可以通过设置以下参数来禁用选项和属性过滤器的自动发现:

parameters:
    bitbag_es_facets_auto_discover: false

然后您必须手动注册您的过滤器

可用过滤器

  • TaxonFacet,允许使用ElasticSearch的Terms聚合对搜索结果进行分类。
  • AttributeFacet,允许使用ElasticSearch的Terms聚合根据产品属性值对搜索结果进行过滤。
  • OptionFacetAttributeFacet相同,但用于产品选项。
  • PriceFacet允许使用ElasticSearch的Histogram聚合根据价格范围过滤搜索结果。

手动注册过滤器的示例

services:
    bitbag_sylius_elasticsearch_plugin.facet.attribute.t_shirt_brand:
      class: BitBag\SyliusElasticsearchPlugin\Facet\AttributeFacet
      arguments:
        - '@bitbag_sylius_elasticsearch_plugin.property_name_resolver.attribute'
        - '@=service("sylius.repository.product_attribute").findOneBy({"code": "t_shirt_brand"})'
        - '@sylius.context.locale'

    bitbag_sylius_elasticsearch_plugin.facet.registry:
      class: BitBag\SyliusElasticsearchPlugin\Facet\Registry
      calls:
        -   method: addFacet
            arguments:
              - t_shirt_brand
              - '@bitbag_sylius_elasticsearch_plugin.facet.attribute.t_shirt_brand'
        - method: addFacet
          arguments:
            - price
            - '@bitbag_sylius_elasticsearch_plugin.facet.price'
        - method: addFacet
          arguments:
            - taxon
            - '@bitbag_sylius_elasticsearch_plugin.facet.taxon'

重新索引

默认情况下,当前索引监听所有Doctrine事件。您可以通过在您的config.yml文件中覆盖索引定义来为每个索引覆盖此设置。

fos_elastica:
    indexes:
        bitbag_attribute_taxons:
            types:
                default:
                    persistence:
                        listener:
                            insert: true
                            update: false
                            delete: true

目前可用的索引具有bitbag_shop_productbitbag_attribute_taxonsbitbag_option_taxons键。

定制

您可以对其进行装饰的服务以及可以扩展的表单

$ bin/console debug:container | grep bitbag_sylius_elasticsearch_plugin

您可以在您的parameters.yml(.dist)文件中覆盖的参数

$ bin/console debug:container --parameters | grep bitbag

测试

$ composer install
$ cd tests/Application
$ APP_ENV=test bin/console doctrine:database:create
$ APP_ENV=test bin/console doctrine:schema:create
// run elasticsearch
$ APP_ENV=test bin/console sylius:fixtures:load
$ APP_ENV=test bin/console fos:elastica:populate
$ APP_ENV=test symfony server:run 127.0.0.1:8080 -d
$ APP_ENV=test bin/console assets:install
$ open http://localhost:8080
$ vendor/bin/behat
$ vendor/bin/phpspec run

功能

插件的所有主要功能在此处描述:这里。

如果您需要关于Sylius开发的帮助,请不要犹豫,直接联系我们。您可以在此网站填写表格或发送电子邮件至hello@bitbag.io

演示

我们创建了一个演示应用,其中包含一些有用的插件用例!访问http://demo.sylius.com/查看。

如果您需要了解Sylius的功能概述,请预约与我们的专家进行咨询。

开发者资源

要了解我们的贡献工作流程等更多信息,我们鼓励您使用以下资源

许可证

此插件的源代码完全免费,并按照MIT许可协议发布。

联系和支持

此开源插件的开发是为了帮助Sylius社区。如果您有任何其他问题,需要帮助安装或配置插件,或需要任何Sylius项目的帮助 - 请告诉我们!联系我们或发送电子邮件至hello@bitbag.io提问。

社区

对于在线沟通,我们邀请您在Sylius Slack上与我们一起聊天及其他用户。