This is a module for integration with the Bloomreach service.
Check to see if your Magento instance has an app/code directory structure. If not, create it manually.
Bloomreach/EngagementConnector
. The final path should look like: app/code/Bloomreach/EngagementConnector
app/code/Bloomreach/EngagementConnector
bloomreach_export_queue
- contains a queue of prepared data waiting to be exported.bloomreach_export_entity
- contains the identifiers of the entities to be added to the export queue.bloomreach_initial_export_status
- stores the initial export data (Current export status, export progress, export errors)bloomreach_add_to_export_queue
- prepares the entities that are waiting to be exported and adds them to the export queue.bloomreach_run_export
- exports data from the export queue to the Bloomreach service.bloomreach_clean_export_queue
- cleans export queue data from database.bloomreach_clean_csv
- cleans csv export files.bloomreach_export_queue_error_notification
- sends export error notifications.Bloomreach\EngagementConnector\Console\Command\AddToExportQueue
bin/magento bloomreach:add-to-export-queue
Bloomreach\EngagementConnector\Console\Command\StartExport
.
The command:
bin/magento bloomreach:export-start --import_id="*********" --csv_file_path="*****" --test_connection="1"
Using the options, you can run the export from a specific csv file.
Where:
Bloomreach\EngagementConnector\Console\Command\CleanCsvFilesCommand
bin/magento bloomreach:clean-csv-files
Bloomreach\EngagementConnector\Console\Command\CleanExportQueueCommand
bin/magento bloomreach:clean-export-queue
If the module was installed through composer, it can be uninstalled using the magento uninstall command:
bin/magento module:uninstall Bloomreach_EngagementConnector
If the module was installed manually, then you need to do the following steps to completely remove all data:
MAGENTO_ROOT/app/code/Bloomreach/EngagementConnector
folder;MAGENTO_ROOT/var/bloomreach
folder;bloomreach_export_queue
, bloomreach_export_entity
, bloomreach_initial_export_status
tables from database;WHERE path LIKE 'bloomreach_engagement%'
MAGENTO_ROOT/app/code/Bloomreach/EngagementConnector
folder;MAGENTO_ROOT/var/bloomreach
folder;bloomreach_export_queue
, bloomreach_export_entity
, bloomreach_initial_export_status
tables from database;WHERE path LIKE 'bloomreach_engagement%'
MAGENTO_ROOT/var/log/bloomreach/engagement_connector.log
- contains errors informationMAGENTO_ROOT/var/log/bloomreach/debug.log
- contains debugging informationBloomreach\EngagementConnector\Model\DataMapping\DataMapperResolver
- responsible for map Magento entity data to the Bloomreach data. Returns Magento\Framework\DataObject
;bloomreach_entity_mapping.xml
- allows you to configure field mappingentity_type
- entity type to map;bloomreach_code
- the name of the key on the Bloomreach side;field
- field to map with bloomreach_code
. bloomreach_entity_mapping.xml
.
<entity_type entity="custom_entity">
<bloomreach_code code="entity_id">
<field code="entity_id" />
</bloomreach_code>
<bloomreach_code code="created_at">
<field code="created_at" />
</bloomreach_code>
<bloomreach_code code="updated_at">
<field code="updated_at" />
</bloomreach_code>
</entity_type>
Bloomreach\EngagementConnector\Model\DataMapping\DataMapper\DataMapperInterface
Bloomreach\EngagementConnector\Model\DataMapping\DataMapperFactory
via di.xml
<type name="Bloomreach\EngagementConnector\Model\DataMapping\DataMapperFactory">
<arguments>
<argument name="dataMappers" xsi:type="array">
<item name="custom_entity" xsi:type="string">
Vendor\Name\Model\DataMapping\DataMapper\Custom
</item>
</argument>
</arguments>
</type>
Optional. If you want to use a separate renderer for the field you need:
Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRenderer\RenderInterface
Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRendererResolver
via di.xml
and specify the entity type and field code:
<type name="Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRendererResolver">
<arguments>
<argument name="fieldValueRenderers" xsi:type="array">
<item name="custom_entity" xsi:type="array">
<item name="entity_id" xsi:type="object">
Vendor\Name\Model\DataMapping\FieldValueRenderer\CustomRenderer\EntityIdRenderer
</item>
</item>
</argument>
</arguments>
</type>
Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRendererResolver
in the mapper class to get field value.Bloomreach\EngagementConnector\Model\DataMapping\DataMapper\DataMapperInterface
Bloomreach\EngagementConnector\Model\DataMapping\DataMapper\ProductMapperResolver
via di.xml
and specify productTypeId
as the name of the argument
<type name="Bloomreach\EngagementConnector\Model\DataMapping\DataMapper\ProductMapperResolver">
<arguments>
<argument name="dataMappers" xsi:type="array">
<item name="configurable" xsi:type="object">
Vendor\Name\Model\DataMapping\DataMapper\Product\Configurable
</item>
</argument>
</arguments>
</type>
Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRenderer\RenderInterface
Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRendererResolver
via di.xml
and specify the entity_type
and field
code as name of items:
<type name="Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRendererResolver">
<arguments>
<argument name="fieldValueRenderers" xsi:type="array">
<item name="catalog_product" xsi:type="array">
<item name="custom_field" xsi:type="object">
Vendor\Name\Model\DataMapping\FieldValueRenderer\Product\CustomRenderer
</item>
</item>
</argument>
</arguments>
</type>
Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRenderer\RenderInterface
Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRenderer\Product\ProductTypeRendererResolver
via di.xml
and specify the productTypeId
and field
code as name of items:
<type name="Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRenderer\Product\ProductTypeRendererResolver">
<arguments>
<argument name="fieldValueRenderers" xsi:type="array">
<item name="simple" xsi:type="array">
<item name="entity_id" xsi:type="object">
Vendor\Name\Model\DataMapping\FieldValueRenderer\Product\Simple\EntityIdRenderer
</item>
</item>
</argument>
</arguments>
</type>
Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRenderer\RenderInterface
Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRendererResolver
via di.xml
and specify the entity_type
and field
code as name of items:
<type name="Bloomreach\EngagementConnector\Model\DataMapping\FieldValueRendererResolver">
<arguments>
<argument name="fieldValueRenderers" xsi:type="array">
<item name="catalog_product" xsi:type="array">
<item name="entity_id" xsi:type="object">
Vendor\Name\Model\DataMapping\FieldValueRenderer\Product\\EntityIdRenderer
</item>
</item>
</argument>
</arguments>
</type>
bloomreach_entity_mapping.xml
in file in your module.bloomreach_code
node to entity_type
that you want to extend
<entity_type entity="catalog_product">
<bloomreach_code code="custom_code">
<field code="custom_field" />
</bloomreach_code>
</entity_type>
bloomreach_code
from mappingbloomreach_entity_mapping.xml
in file in your module.disabled
equal true
to bloomreach_code
that you want to exclude from mapping
<entity_type entity="catalog_product">
<bloomreach_code code="entity_id" disabled="true" />
</entity_type>
bloomreach_entity_mapping.xml
in file in your module.field
node to bloomreach_code
node that you want to change
<entity_type entity="catalog_product">
<bloomreach_code code="title">
<field code="custom_field" />
</bloomreach_code>
</entity_type>
Bloomreach\EngagementConnector\Model\Export\QueueProcessor
- obtains the entities that need to be exported, prepares them and adds them to the export queue.Bloomreach\EngagementConnector\Model\Export\ExportProcessor
- obtaining data from export queue and send them to the Bloomreach service.Bloomreach\EngagementConnector\Model\Export\File\DirectoryProvider
- allows to create and retrieve a directory where the export file should be placed.Bloomreach\EngagementConnector\Model\Export\Transporter\TransporterResolver
- sends data to a specific endpoint, for a specific entity type, to the Bloomreach.Bloomreach\EngagementConnector\Model\Export\File\DirectoryProvider
via di.xml
and specify the entity_type
as name of items:
<type name="Bloomreach\EngagementConnector\Model\Export\File\DirectoryProvider">
<arguments>
<argument name="entityDirectories" xsi:type="array">
<item name="catalog_product" xsi:type="string">catalog_product</item>
</argument>
</arguments>
</type>
<type name="Bloomreach\EngagementConnector\Model\DataProvider\EntityType">
<arguments>
<argument name="entityTypes" xsi:type="array">
<item name="catalog_product" xsi:type="string">Product Feed</item>
</argument>
</arguments>
</type>
customer_id
and email_id
fields to the mapping configuration.
<entity_type entity="purchase">
<bloomreach_code code="email_id">
<field code="customer_email"/>
</bloomreach_code>
<bloomreach_code code="customer_id">
<field code="customer_id"/>
</bloomreach_code>
</entity_type>
Bloomreach\EngagementConnector\Model\DataMapping\DataMapper\RegisteredMapper
in your DataMapper
to map registered fields.Bloomreach\EngagementConnector\Model\Export\Entity\CollectionFactory
via di.xml
:
<type name="Bloomreach\EngagementConnector\Model\Export\Entity\CollectionFactory">
<arguments>
<argument name="collections" xsi:type="array">
<item name="catalog_product" xsi:type="string">
Magento\Catalog\Model\ResourceModel\Product\Collection
</item>
</argument>
</arguments>
</type>
Bloomreach\EngagementConnector\Model\InitialExport\Action\Configure\Import\Request\BuilderComposite
via di.xml
and specify needed request builder:
<type name="Bloomreach\EngagementConnector\Model\InitialExport\Action\Configure\Import\Request\BuilderComposite">
<arguments>
<argument name="builderPool" xsi:type="array">
<item name="catalog_product" xsi:type="string">Bloomreach\EngagementConnector\Model\InitialExport\Action\Configure\Import\Request\Entity\Catalog</item>
</argument>
</arguments>
</type>
feed_enable
,import_id
,catalog_id
if your entity is a catalog,ConfigPathGetter
class via di.xml
:
<type name="Bloomreach\EngagementConnector\System\ConfigPathGetter">
<arguments>
<argument name="configPool" xsi:type="array">
<item name="catalog_product" xsi:type="array">
<item name="feed_enabled" xsi:type="string">bloomreach_engagement/catalog_product_feed/enabled</item>
<item name="import_id" xsi:type="string">bloomreach_engagement/catalog_product_feed/import_id</item>
<item name="catalog_id" xsi:type="string">bloomreach_engagement/catalog_product_feed/catalog_id</item>
</item>
</argument>
</arguments>
</type>
Bloomreach\EngagementConnector\Model\Export\Transporter\TransporterInterface
.Bloomreach\EngagementConnector\Model\Export\Transporter\TransporterResolver
via di.xml
and specify the entity_type
and api_type
as name of items:
<type name="Bloomreach\EngagementConnector\Model\Export\Transporter\TransporterResolver">
<arguments>
<argument name="transporters" xsi:type="array">
<item name="csv_export" xsi:type="array">
<item name="default" xsi:type="object">
Bloomreach\EngagementConnector\Model\Export\Transporter\InitialExport\DefaultTransporter
</item>
</item>
</argument>
</arguments>
</type>
Bloomreach\EngagementConnector\Model\Export\Queue\AddEventToExportQueue
class to add you event to export queue.Bloomreach\EngagementConnector\Model\Export\Transporter\TransporterResolver
via di.xml
and specify the entity_type
and api_type
as name of items:
<type name="Bloomreach\EngagementConnector\Model\Export\Transporter\TransporterResolver">
<arguments>
<argument name="transporters" xsi:type="array">
<item name="event" xsi:type="array">
<item name="custom_entity" xsi:type="object">
Bloomreach\EngagementConnector\Model\Export\Transporter\Event\CustomEntityTransporter
</item>
</item>
</argument>
</arguments>
</type>
Bloomreach\EngagementConnector\Model\Export\Queue\Batch\CommandNameGetter
:
<type name="Bloomreach\EngagementConnector\Model\Export\Queue\Batch\CommandNameGetter">
<arguments>
<argument name="commandNamePool" xsi:type="array">
<item name="event" xsi:type="array">
<item name="purchase" xsi:type="string">customers/events</item>
<item name="purchase_item" xsi:type="string">customers/events</item>
</item>
</argument>
</arguments>
</type>
{
"eventName": "view_item",
"eventBody": {
"sku": "WS02",
"price": "120.00"
}
}
{
"eventName": "view_item",
"eventBody": {
"sku": "WS02",
"price": "120.00"
}
}
Bloomreach_EngagementConnector/js/tracking/event-sender
component to send an event.\Bloomreach\EngagementConnector\Model\Tracking\Event\EventsInterface
and \Magento\Framework\View\Element\Block\ArgumentInterface
interfaces.bloomreach.engagement.connector.tracking
in the layout. Bloomreach\EngagementConnector\Block\Tracking\Event
class for event block. events
.Bloomreach_EngagementConnector::tracking/event/default.phtml
template for send event
<referenceBlock name="bloomreach.engagement.connector.tracking">
<block class="Bloomreach\EngagementConnector\Block\Tracking\Event"
name="bloomreach.engagement.connector.custom.event.tracking"
after="-"
template="Bloomreach_EngagementConnector::tracking/event/default.phtml">
<arguments>
<argument name="events" xsi:type="object">
Bloomreach\EngagementConnector\Model\Tracking\Event\ProductPage\ViewItem
</argument>
</arguments>
</block>
</referenceBlock>
\Bloomreach\EngagementConnector\Model\Tracking\Event\EventsInterface
interface.Bloomreach\EngagementConnector\Model\Tracking\Event\Cart\CartUpdateEventsCollector
class via di.xml
:
<type name="Bloomreach\EngagementConnector\Model\Tracking\Event\Cart\CartUpdateEventsCollector">
<arguments>
<argument name="eventsList" xsi:type="array">
<item name="cart_update" xsi:type="object">Bloomreach\EngagementConnector\Model\Tracking\Event\Cart\CartUpdate</item>
</argument>
</arguments>
</type>