/Magento-2-Google-Shopping-Feed

A simple and clean Magento 2 Feed Extension for Google Shopping.

Primary LanguagePHPMIT LicenseMIT

build

General

Generate feed with product data.

Installations

composer require run_as_root/ext-magento2-google-shopping-feed
bin/magento setup:upgrade

Features

Feed generation

Generate product feed every 2 hours with minimal required attributes, for each storeview.
Places file into pub/media/run_as_root/feed/%s_store_%s_feed.xml.

Technical Specification

Commands

group command description
run_as_root run_as_root:product-feed:execute Runs feed generation for all store views.

Crons

group cronjob description
default run_as_root_product_feed_exporter_cron Runs feed generation based on run_as_root_product_feed/general/cron_schedule config - default each 15 minutes

Entities

Attribute config

DTO: \RunAsRoot\GoogleShoppingFeed\Data\AttributeConfigData

Incapsulates the next information:

  • attribute name/code
  • handler class

List of attributes configurations can be found here: \RunAsRoot\GoogleShoppingFeed\Enum\AttributesToImportEnumInterface::ATTRIBUTES

Data providers

\RunAsRoot\GoogleShoppingFeed\DataProvider\AttributesConfigListProvider

Provides the list of DTOs ( AttributeConfigData ).
Used for CSV row data mapping from product - provides information regarding attributes that should be taken from the product and in wich way (handler).
See configuration list here: \RunAsRoot\GoogleShoppingFeed\Enum\AttributesToImportEnumInterface::ATTRIBUTES

\RunAsRoot\GoogleShoppingFeed\DataProvider\AttributeHandlerProvider

Provides attribute data provider (handler) of type \RunAsRoot\GoogleShoppingFeed\DataProvider\AttributeHandlers\AttributeHandlerInterface, by AttributeConfigData DTO.

\RunAsRoot\GoogleShoppingFeed\DataProvider\AttributeHandlers\AttributeHandlerInterface

Generic interface for attribute data providers.
Each attribute has its own data provider, that incapsulates current interface.
Data provider for specific attribute is configured here \RunAsRoot\GoogleShoppingFeed\Enum\AttributesToImportEnumInterface::ATTRIBUTES.

Services

\RunAsRoot\GoogleShoppingFeed\Service\GenerateFeedService

Perform feed generation for all storeviews with enabled feed generation.
\RunAsRoot\GoogleShoppingFeed\Service\GenerateFeedService is injected.

\RunAsRoot\GoogleShoppingFeed\Service\GenerateFeedService

Generate feed for specific store, based on feed enable*disable configuration.
Incapsulates attributes config provider \RunAsRoot\GoogleShoppingFeed\DataProvider\AttributesConfigListProvider and csv row mapper \RunAsRoot\GoogleShoppingFeed\Mapper\ProductToFeedAttributesRowMapper.
Performs iteration on all products provided by this collection provider \RunAsRoot\GoogleShoppingFeed\CollectionProvider\SimpleProductsCollectionProvider and adds rows into the CSV file.

Configuration

tab group section field
run_as_root general Product Feed Exporter Enable
run_as_root general Product Feed Exporter Cron Schedule
run_as_root general Product Feed Exporter Category Whitelist
run_as_root general Product Feed Exporter Category Blacklist

Extensability points

Add new attribute to feed

  1. Create new attribute data provider. @see interface \RunAsRoot\GoogleShoppingFeed\DataProvider\AttributeHandlers\AttributeHandlerInterface.
  2. Add configuration for new attribute in \RunAsRoot\GoogleShoppingFeed\Enum\AttributesToImportEnumInterface::ATTRIBUTES.

Google Shopping Feeds Grid

Generated feeds could be reviewed inside Admin Backoffice

  • Navigate to Marketing -> run_as_root -> Google Shopping Feed