drunomics/amazon_product_widget

该包已被弃用且不再维护。未建议替代包。

用于渲染亚马逊产品的字段小部件。

1.5.3 2021-11-18 14:25 UTC

README

已弃用:已迁移至 https://www.drupal.org/project/amazon_product_widget

Amazon product widget

提供字段小部件以渲染给定的ASIN的亚马逊产品。

将使用Product Advertising API从亚马逊获取产品数据。一旦获取数据,它将本地缓存以保持在亚马逊请求限制内。

此外,小部件本身将通过Ajax加载,并将缓存到响应中。这样,文章或页面可以无限期地缓存,但亚马逊产品将定期更新,不考虑网站的整体缓存策略。

目录

特性

  • 在字段小部件内获取并渲染亚马逊产品
  • 通过Ajax获取字段以获取缓存的商品数据
  • 适用于桌面和移动设备的通用样式
  • 当产品不可用时,回退到亚马逊搜索结果
  • 可以下载并解析交易信息,如果交易可用,则显示正确的价格

要求

您需要一个亚马逊联盟账户,并将其注册为产品广告API以获取所需的凭据。

安装

  • composer require drunomics/amazon_product_widget
  • 像安装普通Drupal模块一样安装此模块

配置

亚马逊设置配置

启用并配置与composer一起安装的amazon_paapi模块,请参阅模块的README。

亚马逊产品小部件配置

设置以下 amazon_product_widget.settings 配置

  • max_requests_per_day - 亚马逊每天请求的限制(默认 8640)(请参阅缓存和请求限制
  • max_requests_per_second - 亚马逊每秒请求的限制(默认 1)(请参阅缓存和请求限制
  • render_max_age - 小部件渲染缓存(以秒为单位)
  • call_to_action_text - 产品链接文本,用于链接到亚马逊页面
  • price_decimal_separator - 价格使用的十进制分隔符
  • price_thousand_separator - 价格使用的三位分隔符
  • fill_up_with_fallback - 搜索词始终填充到3个产品,即使只在一个小部件中输入了一个ASIN
  • amazon_api_disabled - 使用此选项禁用API调用,例如在ci或任何非生产环境中,以防止耗尽请求。

Amazon产品小部件字段添加到节点或段落中,并配置表单和显示。

交易配置

设置以下amazon_product_widget.deal_settings配置

  • max_csv_processing_time - 处理交易CSV数据块的最大时间(以秒为单位)。(默认:30)

  • deal_feed_url - 交易Feed URL:必须指向亚马逊提供的交易文件。

  • deal_feed_username - 亚马逊提供的交易Feed用户名。

  • deal_feed_password - 亚马逊提供的交易Feed密码。

  • deal_feed_activated - 是否启用交易Feed,即如果可用,则从交易中获取价格。(默认:false)

  • deal_cron_interval - 以分钟为单位的更新交易的间隔。 (默认:1440)

缓存和请求限制

亚马逊对请求限制有非常具体的要求(参见效率指南),因此有必要在本地缓存数据并定期通过cronjob更新。至少每天有一个基本限制(8640)和一个每秒限制,如果需要可以覆盖。

当数据保存时,将为cronjob再次尝试从亚马逊更新数据设置一个更新日期(默认为48小时)。下一次更新可以在设置中覆盖(以小时为单位)

amazon_product_widget.products.renewal_time amazon_product_widget.search_results.renewal_time

默认情况下,每个cron运行将更新100个条目,并且可以在此设置中设置

amazon_product_widget.products.renewal_limit amazon_product_widget.search_results.renewal_limit

权限

  • 刷新亚马逊产品数据 - 能够通过/admin/config/services/amazon/product-renewal手动刷新产品数据

用法

在表单小部件中,输入一个或多个应默认显示的产品的ASIN。亚马逊标准识别号码(ASIN)是唯一的10个字母和/或数字块,用于识别项目。您可以在亚马逊的项目信息页面上找到ASIN。

可选地输入搜索词,当产品不可用时,将使用这些搜索词列出搜索结果以替换输入的产品。

覆盖

该模块允许为每个产品设置覆盖。如果您想设置任何自定义数据,例如覆盖图像、标题等,并与其产品信息一起存储,这很有用。要设置覆盖,只需使用'amazon_product_widget.product_service'服务并调用方法setOverrides()。参数是一个数组。每个键应该是您为其设置覆盖的产品ASIN。值可以是任何类型。

示例

$productService = \Drupal::service('amazon_product_widget.product_service');
$productService->setOverrides([
    'B00318CA92' => [
        'additional_info' => 'This is some additional information',
    ],
]);

覆盖现在已设置。您可以通过调用getProductData(['B00318CA92'])来获取它们,这将返回

[
    'B00318CA92' => [
        'ASIN' => 'B00318CA92',
        // All other fields filled by Amazon...
        'overrides' => [
            'additional_info' => 'This is some additional information',
        ],
    ],
]

命令

基本命令

该模块包含一组命令,您可以使用这些命令与模块的功能进行交互。

  • apw:queue-product-renewal

将所有产品放入续订队列,这将在下一次cron运行时完成。

  • apw:run-product-renewal

立即运行产品续订,无需等待cron。当请求限制达到时,此命令将停止并显示仍在等待续订的产品数量。您可以多次运行它以更新所有产品。

  • apw:stale

显示当前数据库中需要更新的陈旧产品的数量。

覆盖命令

  • apw:overrides <ASIN>

显示为提供ASIN的产品存储的覆盖。

  • apw:reset-all-renewals

重置所有续订,以便数据库中的所有产品都将被视为陈旧并在下一次cron运行时更新。

交易命令

以下命令与Deals Feed API相关。

  • apw:deals:active-deals

获取当前在交易存储中活动的交易总数。

  • apw:deals:update <path>

使用CSV文件中提供的交易更新交易存储。如果没有提供路径,则将从Amazon API下载文件(如果已配置)。

  • apw:deals:info <ASIN>

获取特定ASIN的交易信息。

使用命令

以下命令可用于获取有关产品使用的有关信息。

  • apw:entity-products <entity_id> <entity_type>

返回包含在给定实体中的产品。<entity_type>是可选的,默认为'node'。

  • apw:product-entities <ASIN>

返回包含给定产品(ASIN)的实体ID和类型。

钩子

模块提供了以下钩子

hook_amazon_product_widget_alter_product_data(array &$products_container, AmazonProductField $product_field, NodeInterface $node = NULL)

它允许修改传递给产品小部件模板的产品数据。您会在产品容器中修改产品数据。还传递了亚马逊产品字段,最后是字段正在显示其上的节点。这也可以为NULL,在这种情况下,字段附加到分类术语。

hook_amazon_product_widget_alter_validate_product_data(AmazonProductField $product_field, array $product_data)

允许您验证产品是否有效。这允许您即使产品不可用也显示亚马逊产品小部件,然后您可以选择显示自己的自定义消息而不是完全缺少产品框。

hook_amazon_product_widget_get_custom_asin_map(FieldableEntityInterface $entity)

每当实体保存时,数据库中的ASIN映射都会更新,因此我们始终知道哪些实体包含哪些产品(ASIN)以及哪些产品属于哪些实体。

如果您在实体中的自定义字段中存储产品(ASIN),您可以在这里提取并返回它们,它们将被添加到该实体的ASIN映射中。

维护者

支持的组织