自定义内容类型日期过后,Drupal 7可以自动取消发布内容吗?

时间:2012-02-04 03:23:16

标签: drupal-7 content-type

我希望Drupal 7在给定的自定义内容类型日期过后自动取消发布内容。任何想法/想法将不胜感激。

4 个答案:

答案 0 :(得分:2)

您可能需要查看Rules module。 如果您希望您的用户/内容提交者安排到期时间,请查看Schedule module

答案 1 :(得分:1)

Auto Expire 我认为这个模块符合您的要求

答案 2 :(得分:0)

您只需使用hook_cron()即可编写自定义模块(小型模块)。让函数检索所有节点,检查过期日期,如果过期,则将状态设置为0. http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_cron/7

我没有时间写它,但这是该模块的一般想法:

function MYMOUDULE_cron() {
  // db_query to select all nodes with 
  // your date field and status = 1 (published)
  // loop through the $result, performing node_load as applicable, modify the 
  // $node obj with status = 0 | 1 depending upon
  // the date. Then node_save() the $node obj.
}

答案 3 :(得分:0)

以下是在过期日期过后我用来取消发布内容的查询:

UPDATE node n
INNER JOIN field_data_field_expiry_date e ON e.entity_id = n.nid
SET n.`status` = 0
WHERE STR_TO_DATE(e.field_expiry_date_value, '%Y-%m-%d %k:%i:%S') < NOW() AND n.`status` = 1

因为它在一个查询中都很好并且运行得很快。