【问题标题】:how do i create a report in drupal that gets emailed every month?如何在 drupal 中创建每月通过电子邮件发送的报告?
【发布时间】:2015-05-20 14:14:24
【问题描述】:
我设置了一个视图,希望通过电子邮件将其发送给我(或以后继承我职位的任何人),类似于通过电子邮件发送更新报告的方式。
此视图已全部设置并提取我需要的数据。我也有外部 cron 可以运行我告诉它的任何链接(如外部 cron 链接),所以如果给定一个链接,我可以完成每月运行。我不知道该怎么做的部分是如何将其设置为通过电子邮件发送或如何获取链接以通过外部 cron 作业运行它/将其设置为在月初通过内部 cron 运行
【问题讨论】:
标签:
php
drupal
drupal-7
phpmailer
drupal-views
【解决方案1】:
你可以在这里有更多的解决方案,最终取决于你,哪个更适合你:
-
在自定义模块中,我将实现 hook_cron()。在这个钩子里我
将执行我想要的视图(这并不难,如果你
需要帮助),然后通过电子邮件发送整个输出(我猜
这就是你想要的)。现在,您希望发送这封电子邮件
每月只有一次。为此,您可以有两种可能性:
- 在你的 cron 钩子中处理这个问题:基本上你将上次发送邮件的时间存储在一个变量中(使用 variable_set / variable_get),如果你是上个月发送的,那么这意味着你必须再次发送它,所以你首先更新变量,调用视图,准备输出并通过邮件发送。
- 有一个名为 elysia_cron:https://www.drupal.org/project/elysia_cron 的模块,您可以对其进行配置,以便您站点上的每个 cron 挂钩仅在特定时间运行(就像您配置 crontab 一样)。
另一种解决方案是在您的站点上设置一个端点,而不是
hook_cron(),基本上和前面的一样
解决方案:调用视图并发送邮件。不同之处在于
您可以将 crontab 配置为随时调用此 URL,
所以不需要特殊配置。这里还有一件事:
访问此端点。在我看来,这应该以某种方式
受限制,但因为您不能基于
用户角色(您的 cron 只会将端点称为匿名用户),
您必须找到另一种解决方案(将令牌附加到
url,或者可以从特定的 ip 调用 enpoint,
ETC..)。这是我更喜欢 hook_cron() 的主要原因,因为
这更适合 Drupal。
我是一名 Drupal 开发人员,所以在这种特殊情况下我会选择 1)