sealink/feedme

此包的最新版本(1.4.12)没有提供许可证信息。

Craft 插件,用于轻松从 XML、RSS、ATOM 或 JSON 提要中导入条目和条目数据。

维护者

详细信息

github.com/sealink/FeedMe

源代码

安装: 149

依赖项: 0

建议者: 0

安全: 0

星级: 0

关注者: 15

分支: 140

类型:craft-plugin

1.4.12 2016-07-05 04:52 UTC

This package is not auto-updated.

Last update: 2024-09-14 20:04:05 UTC


README

Feed Me 是一个 Craft 插件,用于轻松从 XML、RSS、ATOM 或 JSON 提要中导入条目和条目数据。可以将提要设置为 Craft 控制面板中的任务,或按需调用以在 twig 模板中使用。

此插件的一个常见用例是消费外部提要(新闻、事件),但也可以用作迁移到其他网站时导入内容的单次任务。

功能

  • 从 XML、RSS、ATOM 或 JSON 提要中导入数据。
  • 将提要保存起来,以便按需轻松重新处理,或用于 Cron 作业。
  • 将提要数据映射到您的条目字段。请参阅支持的字段类型。
  • 重复处理处理 - 控制在再次处理提要时会发生什么。
  • 使用 Craft 的任务服务在后台处理提要。
  • 在每次处理提要之前进行数据库备份。
  • 使用日志解决提要处理问题。
  • 直接从 twig 模板中获取提要数据。
  • Craft 2.5 兼容。

安装

  • feedme 目录添加到您的 craft/plugins 目录中。
  • 导航到设置 -> 插件,然后单击“安装”按钮。

插件选项

  • 更改插件名称,使其在 CP 导航中显示。
  • 设置默认缓存(仅适用于使用模板标签的调用)。
  • 为 Feed Me 启用或禁用特定选项卡。

用法

使用 CP 导航转到 Feed Me 页面,然后单击新建提要按钮。

输入必要的详细信息以配置您的提要

  • 为此提要命名一个有用的名称,以便您记得它做什么。
  • 您提要的实际 URL。
  • 设置提要类型以帮助映射正确的元素。
  • 主元素反映了提要中您的数据所在的节点。
  • 选择要将提要数据放入的分区和条目类型。
  • 决定导入策略:如果将要重新运行此提要,您将如何处理重复的提要条目。

单击 保存并继续 以转到字段映射屏幕。在这里,您可以选择要从提要中捕获哪些数据以及将它们映射到哪些字段,具体取决于您选择的分区和条目类型。在这里,您可以选择要比较的哪些字段(可以不止一个)以确定提要条目是否是重复的。

您必须将数据映射到标题字段或任何其他条目所需字段。

保存提要以供以后使用,或开始导入。

支持的字段类型

Feed Me 支持将以下字段类型的数据从您的提要映射过来

Craft

  • 资产
  • 分类
  • 复选框
  • 颜色
  • 日期/时间
  • 下拉菜单
  • 条目
  • Lightswitch
  • 矩阵
  • 多选
  • 数字
  • 纯文本
  • 位置选择
  • 单选按钮
  • 富文本
  • 表格
  • 标签
  • 用户

第三方

  • 超级表格
  • 智能地图

###元素创建

对于某些元素,如果尚未创建,创建元素的数据可能是有益的。例如,如果资产不在您的资产集合中,则上传它。类似地,对于分类和其他字段也是如此。

目前,Feed Me 以以下方式处理以下适用的字段

资产:仅支持将现有资产映射到该条目。

分类:如果不存在则创建,如果存在则映射。

条目:仅支持将现有条目映射到该条目。feed字段必须包含条目的标题或别名才能成功映射。

标签:总是创建。

用户:仅支持将现有用户映射到该条目。

在内部,Feed Me 使用 Craft 的元素搜索来匹配您的 feed 中的元素值。例如,如果您在 feed 中有 my_filename.png 作为值,并且您正在映射到资产,请确保通过资产索引屏幕搜索实际上返回您期望的结果。

对于故障排除,请确保您已完成重建搜索索引任务。

我们计划包括是否按字段执行此操作的选项。

导入策略

当多次运行 feed 任务时,feed 中可能或可能没有上次运行任务时的相同数据。为了处理这种情况,您可以在 feed 再次处理时控制对旧(和新)条目的操作。

您可以选择多个字段以确定一个条目是否是重复的。最常见的是比较 标题 字段,但可以是您需要的任何字段。

策略选项

添加条目

现有条目将被跳过并保持不变,但新条目将被添加到该部分。用例:feed 聚合、博客条目等。

"我想保持现有条目不变但添加新的条目。"

更新条目

现有条目的字段将使用此 feed 的数据更新。用例:任何需要保持更新的 feed。

"我想更新现有条目并添加新条目。"

删除条目

删除该部分中所有现有条目,仅添加来自此 feed 的条目。请小心。用例:事件或仅需要当前 feed 的数据时。

"我只想要此部分中的条目来自此 feed。"

与 Cron 作业一起使用

调度 feed 处理不是目前 Feed Me 内置的功能。相反,您需要设置一个 Cron 作业或类似的计划任务,在所需的间隔触发 feed 处理。

在主 Feed Me 页面上找到 '直接 feed 链接' 图标(位于删除图标旁边)并复制此 URL。以下任一项可以设置为一个 Cron Job - 用您刚刚复制的 URL 替换 URL。

/usr/bin/wget -O - -q -t 1 "http://your.domain/actions/feedMe/feeds/runTask?direct=1&feedId=1&passkey=FwafY5kg3c"

curl --silent --compressed "http://your.domain/actions/feedMe/feeds/runTask?direct=1&feedId=1&passkey=FwafY5kg3c"

/usr/bin/lynx -source "http://your.domain/actions/feedMe/feeds/runTask?direct=1&feedId=1&passkey=FwafY5kg3c"

参数

  • direct (必需) - 必须设置为 1true。告诉 Feed Me 这是一个外部触发的任务。
  • feedId (必需) - 您要处理的 feed 的 ID。
  • passkey (必需) - 为此 feed 生成的唯一标识符。确保不是任何人都可以触发导入。
  • url (可选) - 如果您的 feed URL 发生变化,您可以在此指定。确保 feed 的结构匹配您的字段映射。

性能

Feed Me 可以通过使用 Craft 的任务服务处理大型 feed。测试表明,处理包含 10K 项的 feed 大约需要 15 分钟来导入。

为了充分利用您的 feed 处理,请遵循以下建议

  • 关闭 devMode。Craft 内置的日志记录在 devMode 开启时会极大地减慢导入过程,并导致高内存开销。
  • 根据您的需求考虑选择 添加条目 选项来处理重复项。
  • 考虑关闭 feed 的 备份 选项。这取决于您的具体环境。

如果遇到内存问题,您可能还需要调整 php.ini 文件中的 memory_limitmax_execution_time 值。

模板示例

虽然您可以通过创建一个数据条目插入数据,但有时您可能更希望按需捕获数据源数据,而不是将其保存为条目。您可以通过以下方式轻松地在twig模板中实现。

为了提高性能,数据源将被缓存(默认为60秒),这可以通过标签参数或插件设置进行设置。

{% set params = {
    url: 'http://path.to/feed/',
    type: 'xml',
    element: 'item',
    cache: 60,
} %}

{% set feed = craft.feedme.feed(params) %}

{% for node in feed %}
	Title: {{ node.title }}
	Publish Date: {{ node.pubDate }}
	Content: {{ node['content:encoded'] }}

	{% for name in node.category %}
		Category: {{ name }}
	{% endfor %}
{% endfor %}

模板参数

  • url (字符串,必需) - 数据源的URL。
  • type (字符串,可选) - 您从数据源获取数据的类型。有效选项为jsonxml(默认为xml)。
  • element (字符串,可选) - 从元素开始的数据源。对于深度数据源很有用。
  • cache (布尔值或数字,可选) - 是否缓存请求。如果true,将使用插件设置中设置的默认值,如果是一个数字,将使用该数字作为其持续时间。将设置设置为false将完全禁用缓存。

对于基于XML的数据源,您还可以访问特定节点的所有属性。这些属性可以通过attributes关键字访问。例如,XML <field my_attribute="Some Value">Another Value</field>,您可以使用{{ xml.field.attributes.my_attribute }}

如果您想使用REST数据源、API或其他第三方平台(Facebook、Twitter等),我强烈推荐使用alecritson的Placid插件,它提供的功能远比本插件提供的多。

钩子

对于第三方字段类型集成,请参阅Wiki

路线图

  • 通过以下方式改进映射:
    • 更精细和灵活的映射界面。
    • 支持导入特定区域。
    • 允许设置默认值。
    • 更精细地控制类别/标签创建。
    • 支持上传资产。
    • 完全支持(创建)仅搜索字段类型(资产、条目、用户)。
    • 支持XML数据源的属性映射。
    • 通配符节点名称(对于不规则的节点名称)。
  • 允许撤销数据源处理。
  • 支持数据源访问的身份验证(基本、OAuth、令牌)。
  • 将文档组织到Wiki中。
  • 修复资产映射问题以及源未设置为所有(不可重复)。
  • 从头到尾编写完整的教程(JSON/XML)。

如果您有建议,我们非常乐意听取!提出建议

发行说明

以下是升级到一个新版本时的主要发行说明。重大更改将在此列出。

支持

如果您在使用Feed Me时遇到问题,最佳做法是通过帮助标签上的支持表单发送给我们消息。这将为我们提供足够的详细信息以协助。

否则,您可以通过提交问题或在Craft Slack Group中寻求帮助。

感谢/贡献

非常感谢Bob Olde Hampsink及其在Import插件上的出色工作,这个插件明显受到了它的影响,以及ClearboldCraft Import,以及所有帮助提供反馈、测试和错误报告的伟大用户。

Pixel & Tonic为他们的出色支持、协助,当然还有创建Craft。

变更日志

查看JSON变更日志