ecomdev / magento2-product-data-preloader
Magento 2 产品数据预加载 FTW
1.1.1
2023-02-06 20:10 UTC
Requires
- php: ~7.2|~8.0
- magento/framework: *
- magento/module-catalog: ~103.0|~104.0
- magento/module-customer: ~102.0|~103.0
- magento/module-quote: ~101.0
Requires (Dev)
- ecomdev/magento2-test-essentials: dev-main
- phpstan/phpstan: ^0.12.86
- phpunit/phpunit: ~9.5
- squizlabs/php_codesniffer: ^3.6.0
README
Magento 平台代码和第三方扩展在许多情况下,在加载产品集合时会产生冗余的数据库查询。
此模块通过使用不同类型的加载类型,提供了一种预加载产品集合数据(如价格、库存数据等)的简便方法。目前它支持以下三种加载的产品集合类型:
list
使用价格索引进行选择的商品,因此对于数据加载器使用过时的索引数据是安全的。cart
用于计算客户购物车并需要从数据库中加载准确数据的商品。other
不属于上述任何类别的商品。
为了预加载产品集合的数据,您需要实现 EcomDev\ProductDataPreLoader\DataService\DataLoader
接口,并提供以下方法:
isApplicable(string $type): bool
方法用于确定您的加载器是否与特定产品集合类型兼容。load(ScopeFilter $filter, ProductWrapper[] $products): array
方法用于将数据预加载到LoadService
中,该服务可以在以后通过您的加载器 ID 访问数据。
自定义加载器应该通过 DI 配置添加到 LoadService
对象,如下所示:
<type name="EcomDev\ProductDataPreLoader\DataService\LoadService"> <arguments> <argument name="loaders" xsi:type="array"> <item name="my_custom_loader" xsi:type="object">My\Module\Loader\MyCustomLoader</item> </argument> </arguments> </type>
安装
鉴于 Composer 1 的 EOL(End of Life),所有新的 Packagist 包在一段时间内都没有发布。因此,保持您的安装最新的最佳方法是使用 Composer 2.0。
composer require ecomdev/magento2-product-data-preloader
使用示例
此示例模块实现了对配置产品数据的乐观预加载,不考虑简单产品状态,用于:
- 产品列表中配置产品的价格
- 配置产品的 MSI(多源库存)库存可用性
- 配置产品的简单产品最小层价格