Drupal FileField从节点中删除文件,但保留在Server上

时间:2010-01-20 13:49:53

标签: drupal drupal-6

我有一个附加到内容类型的cck FileField。当我从节点中删除文件时,我想删除对该文件的引用,但将该文件保留在服务器上。这是因为我们在网站上也使用IMCE,其他项目可能会引用图像。你知道这是否可能吗?

2 个答案:

答案 0 :(得分:2)

从这里查看FileField_delete中的代码:

function field_file_delete($file, $force = FALSE) {
  $file = (object)$file;
  // If any module returns a value from the reference hook, the
  // file will not be deleted from Drupal, but file_delete will
  // return a populated array that tests as TRUE.
  if (!$force && $references = module_invoke_all('file_references', $file)) {
    $references = array_filter($references); // only keep positive values
    if (!empty($references)) {
      return $references;
    }
  }

看起来hook_file_references可能会帮助您。但是我看不到使用这个钩子的很多模块(除了filefield)。

您可以编写自己的模块来跟踪特定字段并实现自己的hook_file_references。例如,您可以跟踪特定的cck值,并在调用钩子时查询它们。

答案 1 :(得分:0)

另外,请在保存时检查是否未创建节点的新修订版。在这种情况下,文件不会从文件系统中删除,因为它将保持附加到原始版本。