Drupal 7.18 では、インポートされたフィード アイテムからノードを作成する Feeds および Feed News モジュールを使用しています。データベースが大きくなりすぎたため、4 週間以上経過したフィード アイテムを完全に削除したいと考えています。特定のフィードを編集し、[アイテムの削除] タブを使用してフィードからすべてのアイテムを手動で削除できますが、4 週間以上前のアイテムのみを削除し、アイテムの有効期限ルールを設定したいと考えています。それを行うための設定が見つかりませんでした。
4 に答える
これを自分で探していて、1か月以上前の記事のすべてのニッドを収集し、それらをnode_delete_multiple($ nids) に渡して、カスタムモジュールのhook_cron()に配置するビューを作成し、次のコマンドで実行できるようにします。 cron。以下は私のhook_cron()関数のコードです。
//remove old articles from site.
$old_articles = views_get_view_result('articles_to_delete');
foreach($old_articles as $article){
$nids_to_delete[]=$article->nid;
}
$num_articles = count($nids_to_delete);
if($num_articles > 0){
node_delete_multiple($nids_to_delete);
watchdog('city_sync', '%num old articles were deleted in cron run.', array('%num' => $num_articles), WATCHDOG_NOTICE);
}
Develモジュールをインストールしました。DevelGenerateモジュールがあります。[Generatecontent]メニューで、さまざまなコンテンツタイプの生成を選択でき、[新しいコンテンツを生成する前に、特定のコンテンツタイプのすべてのコンテンツを削除する]オプションを選択できます。このオプションをチェックして、新しいノード数をゼロに設定しました。そのため、Devel Generateモジュールはすべてのノード(フィードアイテム)を削除しましたが、新しいノードは作成しませんでした。
Aggregator モジュール (コア内ですが、デフォルトでは非アクティブ化されています) は実際にそれを行います: フィード項目を集約しますが、新しいノードは作成しません。
その 4 週間の期間 (カスタム ビューなど) に使用する実際のノードを作成する必要がある場合は、ルール モジュールを使用してpublished
状態を自動的に非公開に設定することができます$today - $datepublished > 4 weeks
。