techdivision/import-product-magic360

提供基本导入功能的 Pacemaker 库,用于 Magic ToolBox Magic 360 图片画廊视图

16.0.0 2023-01-19 08:02 UTC

README

Latest Stable Version Total Downloads License Build Status Scrutinizer Code Quality Code Coverage

请访问 Pacemaker 的网站或我们的文档以获取更多信息

简介

此模块提供导入几乎闻名遐迩的 Product Magic360 Magento 2 扩展的图片功能。

配置

如果使用 Pacemaker - Simple Console Tool >= 3.8,则可以通过向您的 <magento-install-dir>/app/etc/configuration 目录添加以下片段来启用添加更新和替换操作的功能。

第一个片段是 <magento-install-dir>/app/etc/configuration/shortcuts.json,它覆盖了默认快捷方式,并最终将 general/catalog_product/replace.magic360 操作添加到 replaceadd-update 操作中

{
  "shortcuts": {
    "ce": {
      "catalog_product": {
        "replace": [
          "general/general/global-data",
          "general/general/move-files",
          "general/catalog_product/collect-data",
          "general/eav_attribute/convert",
          "general/eav_attribute/add-update.options",
          "general/eav_attribute/add-update.option-values",
          "general/eav_attribute/add-update.swatch-values",
          "general/catalog_category/convert",
          "ce/catalog_category/sort",
          "ce/catalog_category/add-update",
          "ce/catalog_category/add-update.path",
          "ce/catalog_category/add-update.url-rewrite",
          "general/catalog_category/children-count",
          "general/catalog_product/validate",
          "ce/catalog_product/replace",
          "ce/catalog_product/replace.variants",
          "ce/catalog_product/replace.bundles",
          "ce/catalog_product/replace.links",
          "ce/catalog_product/replace.grouped",
          "ce/catalog_product/replace.media",
          "general/catalog_product/replace.msi",
          "general/catalog_product/replace.url-rewrites",
          "general/catalog_product/replace.magic360"
        ],
        "add-update": [
          "general/general/global-data",
          "general/general/move-files",
          "general/catalog_product/collect-data",
          "general/eav_attribute/convert",
          "general/eav_attribute/add-update.options",
          "general/eav_attribute/add-update.option-values",
          "general/eav_attribute/add-update.swatch-values",
          "general/catalog_category/convert",
          "ce/catalog_category/sort",
          "ce/catalog_category/add-update",
          "ce/catalog_category/add-update.path",
          "ce/catalog_category/add-update.url-rewrite",
          "general/catalog_category/children-count",
          "general/catalog_product/validate",
          "ce/catalog_product/add-update",
          "ce/catalog_product/add-update.variants",
          "ce/catalog_product/add-update.bundles",
          "ce/catalog_product/add-update.links",
          "ce/catalog_product/add-update.grouped",
          "ce/catalog_product/add-update.media",
          "general/catalog_product/add-update.msi",
          "general/catalog_product/add-update.url-rewrites",
          "general/catalog_product/add-update.magic360"
        ]
      }
    }
  }
}

第二个和第三个片段使 techdivision/import-product-magic360 扩展类可用于导入器。因此,请将以下内容的片段添加到 <magento-install-dir>/app/etc/configuration/extension-libraries.json

{
  "extension-libraries": [
    "techdivision/import-product-magic360"
  ]
}

和包含以下内容的片段 <magento-install-dir>/app/etc/configuration/additional-vendor-dirs.json

{
  "additional-vendor-dirs": [
    {
      "vendor-dir": "app/code",
      "libraries": [
        "MyProject/Import"
      ]
    }
  ]
}

假设您的 <magento-install-dir>/app/code 包含 Magento 扩展 MyProject/Import

最后,需要覆盖适当的复合观察者的 Symfony DI 配置。例如,如果您使用的是 Magento CE,请添加一个 <magento-install-dir>/app/codeMyProject/import/symfony/Resources/config/services.xml,内容如下,以覆盖默认复合观察者

<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="https://symfony.ac.cn/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://symfony.ac.cn/schema/dic/services https://symfony.ac.cn/schema/dic/services/services-1.0.xsd">
    <services>
        <!--
         | The DI configuration for the composite observers of the delete operation.
         |-->
        <service id="import_product.observer.composite.base.delete" class="TechDivision\Import\Observers\GenericCompositeObserver">
            <call method="addObserver">
                <argument id="import_product_magic360.observer.sku.entity.id.mapping" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_msi.observer.product.source.item.default" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_url_rewrite.observer.clear.url.rewrite" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_magic360.observer.clear.magic360" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.clear.product" type="service"/>
            </call>
        </service>
        <!--
         | The DI configuration for the composite observers of the replace operation.
         |-->
        <service id="import_product.observer.composite.base.replace" class="TechDivision\Import\Observers\GenericCompositeObserver">
            <call method="addObserver">
                <argument id="import_product_url_rewrite.observer.clear.url.rewrite" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.clear.product" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import.observer.attribute.set" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import.observer.additional.attribute" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.url.key" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.file.upload" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.quality.and.stock.status" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.product" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.product.website" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.category.product" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.product.inventory" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.product.attribute" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_url_rewrite.observer.product.url.rewrite" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_variant.observer.product.variant" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_bundle.observer.product.bundle" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_media.observer.product.media" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_link.observer.product.link" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_grouped.observer.product.grouped" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_msi.observer.product.source.item.default" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_magic360.observer.product.magic360" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.clean.up" type="service"/>
            </call>
        </service>
        <!--
         | The DI configuration for the composite observers of the add-update operation.
         |-->
        <service id="import_product.observer.composite.base.add_update" class="TechDivision\Import\Observers\GenericCompositeObserver">
            <call method="addObserver">
                <argument id="import.observer.attribute.set" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import.observer.additional.attribute" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.url.key" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.file.upload" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.quality.and.stock.status" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.product" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.product.website.update" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.category.product.update" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.product.inventory.update" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.product.attribute.update" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_url_rewrite.observer.product.url.rewrite" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_variant.observer.product.variant" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_bundle.observer.product.bundle" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_media.observer.product.media" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_media.observer.clear.media.gallery" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_link.observer.product.link" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_grouped.observer.product.grouped" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_msi.observer.product.source.item.default" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product_magic360.observer.product.magic360" type="service"/>
            </call>
            <call method="addObserver">
                <argument id="import_product.observer.clean.up" type="service"/>
            </call>
        </service>
    </services>
</container>

缺失索引

为了大幅提高导入性能,必须添加两个索引。

为此,打开 MySQL 命令行并输入以下 SQL 语句。

ALTER TABLE `magic360_gallery` ADD INDEX `MAGIC360_GALLERY_PRODUCT_ID` (`product_id`);
ALTER TABLE `magic360_gallery` ADD INDEX `MAGIC360_GALLERY_POSITION` (`position`);