我正在进行一个具有此需求的项目:将有几个自定义内容类型,其中许多字段来自分类法引用。
许多这类分类法都有很多术语(50+)。这些术语由负责此任务的第三方系统定期更新(添加/更正/删除),然后通过are服务公开这些“最新”术语列表。
因此,我不需要强迫人工操作员手动检查这些术语列表并相应地更新D8分类法,我认为一个好的方法是定期运行一个任务来验证该webservice,然后用已经更改的内容更新D8。
我仔细阅读了以下参考资料:
接近项目需求的是上面列表中的第四个。这足以满足目前的需要。
但我不太明白应该在哪里输入这段代码。它需要是一个自定义模块还是应该进入themes/mytheme/mytheme.theme之类的?
从我的立场来看,我认为一个优雅的解决方案是在某个地方(哪里)安排一个例行公事。我可以通过D8's cron调用,这样我就可以定期检索然后更新分类法。但我不知道如何才能达到这个目标。
有人能提供任何好的参考资料,这样我就可以用代码来满足这个愿望了吗?
发布于 2016-08-11 06:37:08
一个简单的方法来设置这个应该是一个cron钩子。
执行周期性动作。需要定期执行某些命令的模块可以实现hook_cron()。然后,当发生cron运行时,引擎将调用钩子,这是管理员定义的。hook_cron()管理的典型任务是数据库维护、备份、重新计算设置或参数、自动邮件和检索远程数据。短时间运行或非资源密集型任务可以在hook_cron()实现中直接执行。长期运行的任务和可能超时的任务(例如检索远程数据、发送电子邮件和密集的文件任务)应该使用队列API而不是直接执行任务。要做到这一点,首先通过\Drupal\Core\注释\QueueWorker插件定义一个或多个队列。然后,将需要处理的项添加到定义的队列中。
如前所述,D8的一种更好的方法是使用queue。
或者尝试使用Feeds的dev版本,它可以在不使用代码的情况下做到这一点:
https://drupal.stackexchange.com/questions/211165
复制相似问题