Drupal 7删除节点不会删除所有相关文件
问题描述:
当节点通过标准Drupal创建时,一个文件会被上传。Drupal 7删除节点不会删除所有相关文件
后来,2个文件通过添加到节点:
file_save(std Class)
file_usage_add(std Class, 'module', 'node', $node_id)
在结束时,我结束了在file_managed和file_usage 3项。
问题:当我通过标准Drupal删除节点时,在初始节点创建期间添加的文件被删除,但不是之后添加的2。这些文件保留在两个表中,并在物理上保留在磁盘上。
是否有一些标志被设置为保留文件,即使节点被删除?如果是这样,这个标志位在哪里,我如何正确设置它(与节点一起被删除)?
答
答案是在file_delete()
功能,请参阅本评论:
//如果任何模块仍然在file_usage表中的使用项目,文件
//不会被删除
由于您的模块已通过使用file_usage_add()
声明对该文件感兴趣,它不会被删除,除非您的模块明确表示可以这样做。
您可以删除调用file_usage_add()
或实施hook_file_delete()
和使用file_usage_delete()
以确保文件删除即可:
function mymodule_file_delete($file) {
file_usage_delete($file, 'mymodule');
}
答
您可以强制文件的删除。
file_delete($old_file, TRUE);
但要确保该文件未在其他节点使用使用:
file_usage_list($file);
具有垃圾链接 –
@RimuAtkinson,THX。我删除了链接。看起来像链接的网站被黑了。 – milkovsky
我删除了我的投票:) –