bitbag / elasticsearch-plugin
BitBag Elasticsearch 插件用于 Sylius。
Requires
- php: ^8.1
- ext-json: *
- friendsofsymfony/elastica-bundle: ^6.0
- sylius/sylius: ~1.13.0
- symfony/property-access: ^5.4 || ^6.0
- symfony/proxy-manager-bridge: ^5.4 || ^6.0
- symfony/webpack-encore-bundle: ^1.15
Requires (Dev)
- behat/behat: ^3.6.1
- behat/mink-selenium2-driver: ^1.4
- bitbag/coding-standard: ^v2.0
- dbrekelmans/bdi: ^1.1
- dmore/behat-chrome-extension: ^1.3
- dmore/chrome-mink-driver: ^2.7
- friends-of-behat/mink: ^1.8
- friends-of-behat/mink-browserkit-driver: ^1.4
- friends-of-behat/mink-debug-extension: ^2.0.0
- friends-of-behat/mink-extension: ^2.4
- friends-of-behat/page-object-extension: ^0.3
- friends-of-behat/suite-settings-extension: ^1.0
- friends-of-behat/symfony-extension: ^2.1
- friends-of-behat/variadic-extension: ^1.3
- lchrusciel/api-test-case: ^5.2
- league/flysystem-bundle: 2.4.0
- phpspec/phpspec: ^7.2
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^1.8.1
- phpstan/phpstan-doctrine: 1.3.69
- phpstan/phpstan-strict-rules: ^1.3.0
- phpstan/phpstan-webmozart-assert: ^1.2.0
- phpunit/phpunit: ^9.0 || ^10.0
- polishsymfonycommunity/symfony-mocker-container: ^1.0
- robertfausk/behat-panther-extension: ^1.1
- sylius-labs/coding-standard: ^4.2
- sylius-labs/suite-tags-extension: ^0.2
- symfony/browser-kit: ^5.4 || ^6.0
- symfony/debug-bundle: ^5.4 || ^6.0
- symfony/dotenv: ^5.4 || ^6.0
- symfony/intl: ^5.4 || ^6.0
- symfony/web-profiler-bundle: ^5.4 || ^6.0
Conflicts
- api-platform/core: v2.7.17
- behat/mink-selenium2-driver: >=1.7.0
- symfony/framework-bundle: 6.2.8
- v4.0.2
- v4.0.1
- v4.0.0
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.4
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.1
- v3.1.0
- v3.0.0
- v2.2.0
- v2.1.1
- v2.1.0
- v2.0.1
- v2.0.0-beta1
- 1.x-dev
- dev-master / 1.13.x-dev
- v1.7.3
- v1.7.2
- v1.7.1
- v1.7.0
- v1.6.4
- v1.6.3
- v1.6.2
- v1.6.1
- v1.6.0
- v1.5.6
- v1.5.5
- v1.5.4
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.3
- v1.4.2
- v1.4.1
- v1.2.0
- v1.1.0
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v1.0.0-beta.4
- v1.0.0-beta.3
- v1.0.0-beta.2
- v1.0.0-beta.1
- dev-OP-546
- dev-OP-505
- dev-OP-514
- dev-use_parameter_for_max_filter
- dev-op-303-api-support
- dev-fix/op-331-fix-missing-breadcrumbs
- dev-op-288-es-refactor
- dev-op-225-product-option-populate
- dev-op-277-search-facets-dto
- dev-bugfix/sylius-1.13-update
- dev-feature/sylius-1.13-update
- dev-merge_fix
- dev-fix/OP-225-not-updated-option-filters
- dev-feature/1.13
- dev-fix/doctrine
- dev-OP-180-validation-for-filter-values
- dev-feature/slack-notifications
- dev-OP-119-move-url-and-port-to-env
- dev-fix/OP-87-Fix-indexes-out-of-sync
- dev-fix/OP-57-sort-limit
- dev-fix/search
- dev-OPSRC-496/Add_bitbag_coding_standard_to_every_plugin
- dev-OPSRC-602/fix-symfony-flex
- dev-feature/webpack-implementation
- dev-Implement-Webpack-Encore
- dev-github-actions
- dev-fix/translations-search
- dev-dev
This package is auto-updated.
Last update: 2024-09-20 14:35:48 UTC
README
BitBag SyliusElasticsearchPlugin
我们希望影响许多独特的电子商务项目并在全球范围内建立我们的品牌认知度,因此我们积极参与创建开源解决方案,特别是为 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 创建的插件
目录
概述
基于 FOSElasticaBundle 的 Sylius 和 Elasticsearch 集成。此插件的主要目标是支持在产品列表页面上通过选项、属性、类别、渠道和名称筛选产品。它完全替代了默认的 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}
页面时,您应该看到一组全新的过滤器。您应该看到如下内容:

您可能还希望将水平菜单引用到新的产品列表页面。按照以下说明进行操作:
- 如果您还没有这样做,请创建两个文件
- 在
templates/bundles/SyliusShopBundle/Taxon
目录中创建_horizontalMenu.html.twig
- 在
templates/bundles/SyliusShopBundle/Product/Show
目录中创建_breadcrumb.html.twig
- 在
- 将这些文件的内容分别粘贴到上述文件中,替换为分别来自
vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Resources/views/Taxon/_horizontalMenu.html.twig
和vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Resources/views/Product/Show/_breadcrumb.html.twig
文件的内容,在两个文件中都将sylius_shop_product_index
替换为bitbag_sylius_elasticsearch_plugin_shop_list_products
。 - 使用
bin/console cache:clear
命令清除缓存。 - 🎉
如果您使用的是垂直菜单,请使用_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
聚合根据产品属性值对搜索结果进行过滤。OptionFacet
与AttributeFacet
相同,但用于产品选项。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_product
、bitbag_attribute_taxons
和bitbag_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上与我们一起聊天及其他用户。