sealink / feedme
Craft 插件,用于轻松从 XML、RSS、ATOM 或 JSON 提要中导入条目和条目数据。
Requires
- composer/installers: ~1.0
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
(必需) - 必须设置为1
或true
。告诉 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_limit
和 max_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
(字符串,可选) - 您从数据源获取数据的类型。有效选项为json
或xml
(默认为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插件上的出色工作,这个插件明显受到了它的影响,以及Clearbold的Craft Import,以及所有帮助提供反馈、测试和错误报告的伟大用户。
Pixel & Tonic为他们的出色支持、协助,当然还有创建Craft。