我想在Drupal中为自定义内容类型添加过期日期字段。它应该以天数(创建节点后7-15天)指定,并且在到达节点后不应该在站点中显示给访问者。但是我需要一个续订选项,允许创建者更新它并再次激活它。
难以实施吗?我怎么能这样做?
答案 0 :(得分:2)
您是否已尝试搜索模块?
这是一个可能做到的技巧http://drupal.org/project/auto_expire。还有其他一些,但也许您应该检查它们以查看哪一个符合您的需求(或者如果需要可以轻松更改)。
答案 1 :(得分:1)
您可以使用视图来执行此操作。创建一个新视图,专门用于该类型的节点或更多节点,并使用“Node:Updated”对其进行过滤。然后指定您需要的天数。
您可以为原始海报创建一个视图,并让他更新帖子,这将重置计数器。
创意解决方案,但它应该有用。
答案 2 :(得分:0)
查看Node expire,根据Rules设置节点的计时器。对于更简单的方法,Scheduler可以做到。两者都是由wimvds链接的Auto Expire模块链接的,因此有一些重复措施,尽管它们似乎有不同的方法。
答案 3 :(得分:0)
以下代码可能会引起您的兴趣。这是我必须创建的模块的一个小片段,用于在Intranet站点上自动过期广告。在您在代码中指定的天数之后,节点只需取消发布,因此可能会从您的网站中隐藏,然后内容的作者可以根据需要重新发布节点。
/**
* Implementation of hook_cron().
*/
function auto_unpublish_pages_cron() {
//we only want to deal with all blog_post content type nodes
$c_type = 'blog_post';
//grab all nodes
$c_nodes = node_load_multiple(array(), array('type' => $c_type));
//setup time stamp for node expiry
$message_search_data = strtotime('- 7 days');
//now loop through nodes, & if they are old, expire them
foreach ($c_nodes as $m) {
$obj = entity_metadata_wrapper('node', $m);
//check when was last updated and if its still published
$last_update = $obj->changed->value();
$published = $obj->status->value();
//if it's still published & it's not recent, unpublish it
if (($message_search_date > $last_update) && $published<>0) {
$obj->status = 0;
$obj->save();
}
}
}