2010-12-09 52 views
1

我想添加到期日期字段到我在Drupal中的自定義內容類型。它應該指定天數(創建節點後7-15天),並且在到達節點後不應該在站點上顯示給訪問者。但我需要一個更新選項才能讓創作者更新並再次激活它。將過期日期添加到Drupal中的節點

難以推理嗎?我該怎麼做?

回答

2

你已經嘗試過搜索模塊嗎?

這裏有一個可能會訣竅http://drupal.org/project/auto_expire。還有其他的,但也許你應該檢查一下,看看哪一個適合你的需求(或者如果需要可以很容易地改變)。

1

您可以使用視圖來做到這一點。創建一個新的視圖,專門針對該類型的一個或多個節點,並使用「節點:更新」對其進行過濾。然後指定您需要多少天。

您可以爲原始海報創建視圖並讓他更新帖子,這將重置計數器。

一個有創意的解決方案,但它應該工作。

+0

感謝沃特但到期日期是在每個節點和海報指定它,所以我不能把一個靜態值一天它在views.it應該從節點的另一場得到它的值不同。 – 2010-12-09 13:27:43

0

看看Node expire,它根據Rules爲節點設置定時器。對於更簡單的方法,Scheduler可以做到這一點。兩者都鏈接在由wimvds鏈接的Auto Expire模塊中,所以有一些重複的措施,儘管它們似乎有不同的方法。

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(); 

    } 

    } 

}