我如何在drupal中创建一个每月通过电子邮件发送的报告?

时间:2015-05-20 14:14:24

标签: php drupal drupal-7 phpmailer drupal-views

我有一个视图设置,我希望通过电子邮件发送给我(或继续我的职位),类似于更新报告的电子邮件发送方式。

此视图已全部设置并提取我需要的数据。我也有外部cron可以运行我告诉它的任何链接(如外部cron链接),所以如果给出一个链接,我可以完成每月运行。我无法弄清楚是什么要做的是如何将其设置为通过电子邮件发送或如何获取链接以通过外部cron作业运行它/将其设置为在本月的第一天通过内部cron运行

1 个答案:

答案 0 :(得分:0)

您可以在此处获得更多解决方案,最终由您决定哪种方式更适合您:

  1. 在自定义模块中,我将实现hook_cron()。在这个钩子我 会执行我想要的视图(这不难,如果你,请告诉我 这里需要帮助),然后只是通过电子邮件发送整个输出(我想 这就是你想要的)。现在,您希望发送此电子邮件 每月只有一次。为此你可以有两种可能性:

    • 在你的cron hook中处理这个:基本上你存储了最后一次在变量中发送邮件时(使用variable_set / variable_get),如果你上个月发送了它,那么这意味着你必须再次发送它,所以你首先更新变量,调用视图,准备输出并通过邮件发送。
    • 有一个名为elysia_cron的模块:https://www.drupal.org/project/elysia_cron您可以对其进行配置,以便您网站上的每个cron挂钩仅在特定时间运行(就像配置crontab一样)。
  2. 另一种解决方案是在您的网站上设置端点,而不是 hook_cron(),基本上和以前一样 解决方案:调用视图并发送邮件。不同之处在于 你可以配置你的crontab来随时调用这个URL, 所以不需要特殊配置。还有一件事: 访问此端点。在我看来,这应该是某种方式 限制,但因为你不能基于a强加限制 用户角色(您的cron将仅以匿名用户身份调用端点), 你必须找到另一个解决方案(一个标记附加到 url,或者也许可以从特定的ip调用enpoint, 等等..)。这是我更喜欢hook_cron()的主要原因 这在Drupal中更合适。

  3. 我是Drupal的开发人员,所以我在这个特例中的意思是数字1)