drunomics / amazon_product_widget
用于渲染亚马逊产品的字段小部件。
Requires
- drunomics/amazon_paapi: ^1.1
- 1.x-dev
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.7
- 1.4.6
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.10
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.x-dev
- 0.3.7
- 0.3.6
- 0.3.5
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- dev-renovate/configure
This package is auto-updated.
Last update: 2022-10-26 10:34:05 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个产品,即使只在一个小部件中输入了一个ASINamazon_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映射中。
维护者
- Mathias (mbm80) - https://www.drupal.org/u/mbm80
支持的组织
- drunomics - https://www.drupal.org/drunomics