behappy / elasticsearch-plugin
BitBag Elasticsearch 插件,适用于 Sylius。
Requires
- php: ^7.1
- friendsofsymfony/elastica-bundle: ^5.0
- sylius/sylius: ^1.1
Requires (Dev)
- behat/behat: ^3.3
- behat/mink: ^1.7
- behat/mink-browserkit-driver: ^1.3
- behat/mink-extension: ^2.2
- behat/mink-selenium2-driver: ^1.3
- friends-of-behat/context-service-extension: ^1.0
- friends-of-behat/cross-container-extension: ^1.0
- friends-of-behat/service-container-extension: ^1.0
- friends-of-behat/symfony-extension: ^1.0
- friends-of-behat/variadic-extension: ^1.0
- lakion/mink-debug-extension: ^1.2.3
- phpspec/phpspec: ^3.2
- phpstan/phpstan-shim: ^0.9.2
- phpunit/phpunit: ^5.6
- se/selenium-server-standalone: ^2.52
- sylius-labs/coding-standard: ^2.0
This package is not auto-updated.
Last update: 2024-09-19 16:00:27 UTC
README
概述
基于 FOSElasticaBundle 的 Sylius 和 Elasticsearch 集成。此插件的主要目标是支持在前端产品列表页面上通过选项、属性、分类、渠道和名称进行产品筛选。它完全替换了默认的 Sylius sylius_shop_product_index
路由。
此外,该插件具有友好的 Sylius 架构,使得将资源映射到 Elastic 文档更加容易。它也非常灵活,因此您可以根据特定的业务需求自定义现有功能。
支持
您可以通过 此页面 订购我们的支持。
我们在 Sylius 和 Pimcore 之上进行令人惊叹的电子商务项目开发。需要帮助或额外的资源来完成项目吗?请发送电子邮件到 mikolaj.krol@bitbag.pl 或访问 我们的网站!🚀
演示
我们创建了一个演示应用程序,其中包含一些有用的插件用例!访问 demo.bitbag.shop 来查看它。管理员可以通过 demo.bitbag.shop/admin 链接和 sylius: sylius
凭据访问。
安装
$ composer require bitbag/elasticsearch-plugin
将插件依赖项添加到您的 AppKernel.php 文件
public function registerBundles() { return array_merge(parent::registerBundles(), [ ... new \FOS\ElasticaBundle\FOSElasticaBundle(), new \BitBag\SyliusElasticsearchPlugin\BitBagSyliusElasticsearchPlugin(), ]); }
在您的 app/config/config.yml
文件中导入所需的配置
# app/config/config.yml imports: ... - { resource: "@BitBagSyliusElasticsearchPlugin/Resources/config/config.yml" }
在您的 app/config/routing.yml
文件之上导入路由
# app/config/routing.yml bitbag_sylius_elasticsearch_plugin: resource: "@BitBagSyliusElasticsearchPlugin/Resources/config/routing.yml" redirect_sylius_shop_product_index: path: /{_locale}/taxons/{slug} controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::redirectAction defaults: route: bitbag_sylius_elasticsearch_plugin_shop_list_products permanent: true requirements: slug: .+
当 Elasticsearch 服务器运行时,执行以下命令
$ bin/console fos:elastica:populate
注意:如果您在生产环境中运行它,请向此命令添加 -e prod
标志。Elastic 创建时带有环境后缀。
使用方法
渲染商店产品列表
现在当您访问 /{_locale}/products/taxon/{slug}
页面时,您应该看到一组全新的过滤器。您应该看到如下内容

您可能还想将水平菜单指向新的产品列表页面。按照以下说明操作
- 如果您还没有这样做,请创建一个位于
app/Resources/SyliusShopBundle/views/Taxon
目录下的_horizontalMenu.html.twig
文件。 - 将
sylius_shop_product_index
替换为bitbag_sylius_elasticsearch_plugin_shop_list_products
。 - 使用
bin/console cache:clear
命令清理您的缓存。 - 🎉
在过滤器菜单中排除选项和属性
您可能不想在菜单中显示某些特定的选项或属性。您可以为此设置特定的参数
parameters: bitbag_es_excluded_filter_options: [] bitbag_es_excluded_filter_attributes: ['book_isbn', 'book_pages']
默认情况下,所有选项和属性都会被索引。更改这些参数后,请记住再次运行 bin/console fo:el:po
命令(这是 fos:elastica:populate
的快捷方式)。
重新索引
默认情况下,当前索引监听所有 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
键的索引是可用的。
自定义
您可以使用以下服务进行装饰,以及可以扩展的表单:
bitbag.sylius_elasticsearch_plugin.context.product_attributes BitBag\SyliusElasticsearchPlugin\Context\ProductAttributesContext bitbag.sylius_elasticsearch_plugin.context.product_options BitBag\SyliusElasticsearchPlugin\Context\ProductOptionsContext bitbag.sylius_elasticsearch_plugin.context.taxon BitBag\SyliusElasticsearchPlugin\Context\TaxonContext bitbag.sylius_elasticsearch_plugin.string_formatter BitBag\SyliusElasticsearchPlugin\Formatter\StringFormatter bitbag.sylius_elasticsearch_plugin.twig.extension.unset_array_elements BitBag\SyliusElasticsearchPlugin\Twig\Extension\UnsetArrayElementsExtension bitbag_sylius_elasticsearch_plugin.controller.action.shop.list_products BitBag\SyliusElasticsearchPlugin\Controller\Action\Shop\ListProductsAction bitbag_sylius_elasticsearch_plugin.controller.request_data_handler.pagination BitBag\SyliusElasticsearchPlugin\Controller\RequestDataHandler\PaginationDataHandler bitbag_sylius_elasticsearch_plugin.controller.request_data_handler.shop_product_list BitBag\SyliusElasticsearchPlugin\Controller\RequestDataHandler\ShopProductListDataHandler bitbag_sylius_elasticsearch_plugin.controller.request_data_handler.shop_products_sort BitBag\SyliusElasticsearchPlugin\Controller\RequestDataHandler\ShopProductsSortDataHandler bitbag_sylius_elasticsearch_plugin.finder.product_attributes BitBag\SyliusElasticsearchPlugin\Finder\ProductAttributesFinder bitbag_sylius_elasticsearch_plugin.finder.product_options BitBag\SyliusElasticsearchPlugin\Finder\ProductOptionsFinder bitbag_sylius_elasticsearch_plugin.finder.shop_products BitBag\SyliusElasticsearchPlugin\Finder\ShopProductsFinder bitbag_sylius_elasticsearch_plugin.form.type.choice_mapper.product_attributes BitBag\SyliusElasticsearchPlugin\Form\Type\ChoiceMapper\ProductAttributesMapper bitbag_sylius_elasticsearch_plugin.form.type.choice_mapper.product_options BitBag\SyliusElasticsearchPlugin\Form\Type\ChoiceMapper\ProductOptionsMapper bitbag_sylius_elasticsearch_plugin.form.type.name_filter BitBag\SyliusElasticsearchPlugin\Form\Type\NameFilterType bitbag_sylius_elasticsearch_plugin.form.type.price_filter BitBag\SyliusElasticsearchPlugin\Form\Type\PriceFilterType bitbag_sylius_elasticsearch_plugin.form.type.product_attributes_filter BitBag\SyliusElasticsearchPlugin\Form\Type\ProductAttributesFilterType bitbag_sylius_elasticsearch_plugin.form.type.product_options_filter BitBag\SyliusElasticsearchPlugin\Form\Type\ProductOptionsFilterType bitbag_sylius_elasticsearch_plugin.form.type.shop_products_filter BitBag\SyliusElasticsearchPlugin\Form\Type\ShopProductsFilterType bitbag_sylius_elasticsearch_plugin.property_builder.attribute BitBag\SyliusElasticsearchPlugin\PropertyBuilder\AttributeBuilder bitbag_sylius_elasticsearch_plugin.property_builder.attribute_taxons BitBag\SyliusElasticsearchPlugin\PropertyBuilder\AttributeTaxonsBuilder bitbag_sylius_elasticsearch_plugin.property_builder.channel_pricing BitBag\SyliusElasticsearchPlugin\PropertyBuilder\ChannelPricingBuilder bitbag_sylius_elasticsearch_plugin.property_builder.channels BitBag\SyliusElasticsearchPlugin\PropertyBuilder\ChannelsBuilder bitbag_sylius_elasticsearch_plugin.property_builder.option BitBag\SyliusElasticsearchPlugin\PropertyBuilder\OptionBuilder bitbag_sylius_elasticsearch_plugin.property_builder.option_taxons BitBag\SyliusElasticsearchPlugin\PropertyBuilder\OptionTaxonsBuilder bitbag_sylius_elasticsearch_plugin.property_builder.product_created_at BitBag\SyliusElasticsearchPlugin\PropertyBuilder\ProductCreatedAtPropertyBuilder bitbag_sylius_elasticsearch_plugin.property_builder.product_name BitBag\SyliusElasticsearchPlugin\PropertyBuilder\ProductNameBuilder bitbag_sylius_elasticsearch_plugin.property_builder.product_taxons BitBag\SyliusElasticsearchPlugin\PropertyBuilder\ProductTaxonsBuilder bitbag_sylius_elasticsearch_plugin.property_builder.sold_units BitBag\SyliusElasticsearchPlugin\PropertyBuilder\SoldUnitsPropertyBuilder bitbag_sylius_elasticsearch_plugin.property_name_resolver.attribute BitBag\SyliusElasticsearchPlugin\PropertyNameResolver\ConcatedNameResolver bitbag_sylius_elasticsearch_plugin.property_name_resolver.channel_pricing BitBag\SyliusElasticsearchPlugin\PropertyNameResolver\ConcatedNameResolver bitbag_sylius_elasticsearch_plugin.property_name_resolver.name BitBag\SyliusElasticsearchPlugin\PropertyNameResolver\ConcatedNameResolver bitbag_sylius_elasticsearch_plugin.property_name_resolver.option BitBag\SyliusElasticsearchPlugin\PropertyNameResolver\ConcatedNameResolver bitbag_sylius_elasticsearch_plugin.property_name_resolver.price BitBag\SyliusElasticsearchPlugin\PropertyNameResolver\PriceNameResolver bitbag_sylius_elasticsearch_plugin.query_builder.contains_name BitBag\SyliusElasticsearchPlugin\QueryBuilder\ContainsNameQueryBuilder bitbag_sylius_elasticsearch_plugin.query_builder.has_attribute_taxon BitBag\SyliusElasticsearchPlugin\QueryBuilder\HasTaxonQueryBuilder bitbag_sylius_elasticsearch_plugin.query_builder.has_attributes BitBag\SyliusElasticsearchPlugin\QueryBuilder\HasAttributesQueryBuilder bitbag_sylius_elasticsearch_plugin.query_builder.has_channel BitBag\SyliusElasticsearchPlugin\QueryBuilder\HasChannelQueryBuilder bitbag_sylius_elasticsearch_plugin.query_builder.has_option_taxon BitBag\SyliusElasticsearchPlugin\QueryBuilder\HasTaxonQueryBuilder bitbag_sylius_elasticsearch_plugin.query_builder.has_options BitBag\SyliusElasticsearchPlugin\QueryBuilder\HasOptionsQueryBuilder bitbag_sylius_elasticsearch_plugin.query_builder.has_price_between BitBag\SyliusElasticsearchPlugin\QueryBuilder\HasPriceBetweenQueryBuilder bitbag_sylius_elasticsearch_plugin.query_builder.has_product_taxon BitBag\SyliusElasticsearchPlugin\QueryBuilder\HasTaxonQueryBuilder bitbag_sylius_elasticsearch_plugin.query_builder.is_enabled BitBag\SyliusElasticsearchPlugin\QueryBuilder\IsEnabledQueryBuilder bitbag_sylius_elasticsearch_plugin.query_builder.product_attributes_by_taxon BitBag\SyliusElasticsearchPlugin\QueryBuilder\ProductAttributesByTaxonQueryBuilder bitbag_sylius_elasticsearch_plugin.query_builder.product_options_by_taxon BitBag\SyliusElasticsearchPlugin\QueryBuilder\ProductOptionsByTaxonQueryBuilder bitbag_sylius_elasticsearch_plugin.query_builder.shop_products BitBag\SyliusElasticsearchPlugin\QueryBuilder\ShopProductsQueryBuilder
您可以在您的参数文件(parameters.yml(.dist))中覆盖的参数
bitbag_es_excluded_filter_attributes [] bitbag_es_excluded_filter_options [] bitbag_es_shop_attribute_property_prefix attribute bitbag_es_shop_attribute_taxons_property attribute_taxons bitbag_es_shop_channels_property channels bitbag_es_shop_enabled_property enabled bitbag_es_shop_name_property_prefix name bitbag_es_shop_option_property_prefix option bitbag_es_shop_option_taxons_property option_taxons bitbag_es_shop_product_created_at product_created_at bitbag_es_shop_product_price_property_prefix price bitbag_es_shop_product_sold_units sold_units bitbag_es_shop_product_taxons_property product_taxons fos_elastica.default_index bitbag_shop_product
测试
$ composer install $ cd tests/Application $ yarn install $ yarn run gulp $ bin/console assets:install web -e test $ bin/console doctrine:schema:create -e test $ elasticsearch $ bin/console fos:elastica:populate -e test $ bin/console server:run 127.0.0.1:8080 -d web -e test $ open https://:8080 $ bin/behat $ bin/phpspec run
贡献
了解更多关于我们的贡献流程,请访问http://docs.sylius.org/en/latest/contributing/。