2010-12-09 45 views
1

Je souhaite ajouter un champ de date d'expiration à mon type de contenu personnalisé dans Drupal. il devrait être spécifié par jours (7-15 -.... jours après la création du nœud) et après avoir atteint le nœud ne devrait pas afficher sur le site pour les visiteurs. mais j'ai besoin d'une option de renouvellement pour permettre au créateur de le renouveler et de l'activer à nouveau.Ajouter une date d'expiration à un nœud dans Drupal

est-ce trop difficile à impelmentation? Comment puis-je le faire?

Répondre

2

Avez-vous déjà essayé de rechercher des modules?

En voici une qui pourrait faire l'affaire http://drupal.org/project/auto_expire. Il y en a d'autres aussi, mais peut-être devriez-vous les vérifier pour voir lequel correspond à vos besoins (ou peut être modifié facilement si nécessaire).

1

Vous pouvez utiliser Views pour cela. Créez une nouvelle vue, spécifiquement pour un ou plusieurs nœuds de ce type, et ajoutez un filtre avec "Node: Updated". Puis spécifiez combien de jours vous avez besoin.

Vous pouvez créer une vue pour l'affiche originale et lui faire mettre à jour le poste, ce qui réinitialisera le compteur.

Une solution créative, mais cela devrait fonctionner.

+0

merci mais wouter la date d'expiration est différent à chaque nœud et l'affiche préciser donc je ne peux pas mettre une valeur de jour statique dans views.it devrait obtenir sa valeur d'un autre champ de noeud. –

0

Jetez un oeil à Node expire qui configure les minuteurs pour les nœuds basés sur Rules. Pour une approche plus simple, Scheduler peut le faire. Les deux sont liés par le module Auto Expire lié par wimvds, donc il y a une certaine mesure de duplication, bien qu'ils semblent avoir des approches différentes.

0

Le code suivant peut-être d'intérêt. C'est un petit extrait d'un module que j'ai dû créer pour expirer automatiquement des publicités sur un site intranet. Les nœuds sont simplement dépubliés après un certain nombre de jours que vous spécifiez dans le code, de sorte qu'ils peuvent être masqués sur votre site, puis l'auteur du contenu peut simplement ré-publier les nœuds s'ils le souhaitent.

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

    } 

    } 

}