it-swarm-ko.tech

Filefield 값을 삭제할 때 기본 파일을 유지하는 방법

FileField (특히 이미지)가있는 콘텐츠 유형이 있습니다. 이 값 중 하나가 삭제되면 Drupal은 다른 노드가 동일한 파일을 참조하지 않는 한) 기본 파일도 삭제합니다.

기본 파일을 삭제하고 싶지 않고 파일 시스템에 남아 있기를 원합니다. FileField 값이 삭제 된 후 남아 있는지 확인하는 데 사용할 수있는 후크 또는 기타 기술이 있습니까?

4
Greg

추악한 해킹이지만 파일이 삭제되는 것을 막는 가장 간단한 방법입니다. file_delete를 연결 한 다음 $file 변수에서 uri 속성을 제거하면 작동합니다. URI가 없으면 Drupal은 파일을 삭제할 수 없습니다.

// Think twice before using this ugly hack.
// It probably breaks something and kills kittens.
function mymodule_file_delete($file) {
  $path = drupal_realpath($file->uri);
  if (!is_dir($path) && is_file($path)) {
    if (preg_match('/insert_regex_here/', $path)) {
      $file->uri = NULL;
    }
  }
}

내가 고려한 다른 대안은 다음과 같습니다.

  • 해킹 코어
    해킹 코어는 금기 사항이지만 위에서 사용한 후크보다 깨끗한 솔루션입니다.
  • 사용하려는 각 파일에 file_usage_add () 사용
    Druphal과 독립적으로 생성 및 삭제 된 수만 개의 파일이 사용 사례에 맞지 않습니다. 모든 파일을 file_usage_add와 동기화하는 것은 어려울 것입니다.
  • Media 모듈을 사용하여 파일 경로를 참조하십시오
    미디어가 과도하게 보이며 아직 안정적이지 않습니다. 또한 그것이 내가 원하는 것을 할 것인지 확실하지 않습니다.
0
Greg
0
Daniel Nitsche