diff --git a/_includes/pbc/all/install-features/202311.0/install-the-product-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-product-feature.md new file mode 100644 index 00000000000..5f64d845a29 --- /dev/null +++ b/_includes/pbc/all/install-features/202311.0/install-the-product-feature.md @@ -0,0 +1,355 @@ + + +{% info_block errorBox %} + +The following feature integration guide expects the basic feature to be in place. +This guide only describes the *Product Concrete Search* and *Add to cart from the Catalog page* integration. + +{% endinfo_block %} + + +## Install feature core + +Follow the steps below to install the feature core. + +### Prerequisites + +Install the required features: + +| NAME | VERSION | INTEGRATION GUIDE | +|---|---|---| +| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/pbc/all/miscellaneous/{{page.version}}/install-and-upgrade/install-features/install-the-spryker-core-feature.html) +| Prices | {{page.version}} | [Integrate the Prices feature](/docs/pbc/all/price-management/{{page.version}}/base-shop/install-and-upgrade/install-features/install-the-prices-feature.html) | + +### 1) Install the required modules using Composer + +Install the required modules: + +```bash +composer require spryker-feature/product:"{{page.version}}" --update-with-dependencies +``` +{% info_block warningBox "Verification" %} + +Make sure that the following modules have been installed: + +| MODULE | EXPECTED DIRECTORY | +| --- | --- | +| Product | spryker/product | +| ProductAttribute | spryker/product-attribute | +| ProductAttributeGui | spryker/product-attribute-gui | +| ProductCategoryFilter | spryker/product-category-filter | +| ProductCategoryFilterGui | spryker/product-category-filter-gui | +| ProductCategoryFilterStorage | spryker/product-category-filter-storage | +| ProductImageStorage | spryker/product-image-storage | +| ProductManagement | spryker/product-management | +| ProductPageSearch | spryker/product-page-search | +| ProductQuantityStorage | spryker/product-quantity-storage | +| ProductSearch | spryker/product-search | +| ProductStorage | spryker/product-storage | +| ProductSearchConfigStorage | spryker/product-search-config-storage | + +{% endinfo_block %} + +Apply database changes and generate entity and transfer changes: + +```bash +console propel:install +console transfer:generate +``` + +{% info_block warningBox "Verification" %} + +Make sure that the following changes have been applied in transfer objects: + +| TRANSFER | TYPE | EVENT | PATH | +| --- | --- | --- | --- | +| ProductImageFilter | class | created | src/Generated/Shared/Transfer/ProductImageFilterTransfer | +| ProductConcretePageSearch.images | property | added | src/Generated/Shared/Transfer/ProductConcretePageSearchTransfer | + +{% endinfo_block %} + +Append glossary according to your configuration: + +**src/data/import/glossary.csv** + +```yaml +quick-order.input.placeholder,Search by SKU or Name,en_US +quick-order.input.placeholder,Suche per SKU oder Name,de_DE +product_quick_add_widget.form.quantity,"# Qty",en_US +product_quick_add_widget.form.quantity,"# Anzahl",de_DE +quick-order.search.no_results,Item cannot be found,en_US +quick-order.search.no_results,Das produkt konnte nicht gefunden werden.,de_DE +product_search_widget.search.no_results,Products were not found.,en_US +product_search_widget.search.no_results,Products were not found.,de_DE +``` + +Import data: + +```bash +console data:import glossary +``` + +{% info_block warningBox "Verification" %} + +Make sure that the configured data has been added to the `spy_glossary` table in the database. + +{% endinfo_block %} + +### 2) Configure export to Redis and Elasticsearch + +Add to a cart from the catalog page configuration: + +**src/Pyz/Zed/ProductPageSearch/ProductPageSearchConfig.php** + +```php +add(new ProductConcretePageSearchProductImageEventSubscriber()); + + return $eventSubscriberCollection; + } +} +``` + +**src/Pyz/Zed/ProductPageSearch/ProductPageSearchDependencyProvider.php** + +```php + + */ + protected function getPublisherPlugins(): array + { + return [ + new ProductConcretePublisherTriggerPlugin(), + new CategoryStoreProductAbstractPageSearchWritePublisherPlugin(), + ]; + } +} +``` + +{% info_block warningBox "Verification" %} + +Ensure the following: +1. After executing the `console sync:data product_concrete` command, product data, including images, is synced to Elasticsearch product concrete documents. +2. When a product or its images, updated by Zed UI product data including images, is synced in respective Elasticsearch product concrete documents. + +| STORAGE TYPE | TARGET ENTITY | EXAMPLE EXPECTED DATA IDENTIFIER | +| --- | --- | --- | +| Elasticsearch | ProductConcrete | product_concrete:de:de_de:1 | + +**Expected data fragment example** + +```yaml +{ + "store":"DE", + "locale":"de_DE", + "type":"product_concrete", + "is-active":true, + "search-result-data":{ + "id_product":1, + "fkProductAbstract":2, + "abstractSku":"222", + "sku":"222_111", + "type":"product_concrete", + "name":"HP 200 280 G1", + "images":[ + { + "idProductImage":1, + "idProductImageSetToProductImage":1, + "sortOrder":0, + "externalUrlSmall":"//images.icecat.biz/img/gallery_mediums/img_29406823_medium_1480596185_822_26035.jpg", + "externalUrlLarge":"//images.icecat.biz/img/gallery_raw/29406823_8847.png" + } + ] + }, + "full-text-boosted":[ + "HP 200 280 G1", + "222_111" + ], + "suggestion-terms":[ + "HP 200 280 G1", + "222_111" + ], + "completion-terms":[ + "HP 200 280 G1", + "222_111" + ], + "string-sort":{ + "name":"HP 200 280 G1" + } +} +``` +{% endinfo_block %} + + +## Install feature frontend + +Follow the steps below to install the Product feature frontend. + +### Prerequisites + +Overview and install the necessary features before beginning the integration step. + +| NANE | VERSION | INTEGRATION GUIDE| +| --- | --- | --- | +| Spryker Core | {{page.version}} | [Spryker Core feature integration](/docs/pbc/all/miscellaneous/{{page.version}}/install-and-upgrade/install-features/install-the-spryker-core-feature.html) + +### 1) Install the required modules using Composer + +Install the required modules: + +```bash +composer require spryker-feature/product:"{{page.version}}" --update-with-dependencies +``` + +{% info_block warningBox "Verification" %} + +Make sure that the following modules have been installed: + +| MODULE | EXPECTED DIRECTORY | +| --- | --- | +| ProductSearchWidget | spryker-shop/product-search-widget | +| ProductSearchWidgetExtension | vendor/spryker-shop/product-search-widget-extension | + +{% endinfo_block %} + +### 2) Set up widgets + +To enable widgets, register the following plugins: + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +| --- | --- | --- | --- | +| ProductConcreteSearchWidget | Allows customers to search for concrete products on the Cart page. | None | SprykerShop\Yves\ProductSearchWidget\Widget | +| ProductConcreteSearchWidget | Incorporates `ProductConcreteSearchWidget` and lets customers search for concrete products and quickly add them to the cart with the desired quantity. | None | SprykerShop\Yves\ProductSearchWidget\Widget | +| ProductConcreteSearchGridWidget | Enables the output list of concrete products from search filtered by criteira. | None | SprykerShop\Yves\ProductSearchWidget\Widget | + +**src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php** + +```php +