2009-11-25 4 views
2

나는 이미 정적 웹 사이트에서 내 서버에 저장된 많은 mp3 파일을 가지고 있으며, 이제 drupal로 이동 중입니다. 각 오디오 파일에 대한 노드를 만들려고하지만 각 파일을 다시 업로드하지 않아도됩니다. 내가 원하는 파일을 drupal 파일 디렉토리에 복사 한 다음 노드를 해당 파일과 연관시킵니다.drupal filefield에 많은 기존 파일을 어떻게 연관시킬 수 있습니까?

달성 방법에 대한 아이디어가 있으십니까?

감사합니다.

답변

4

다른 접근법을 제안 할 것인지, 아니면 원래 질문과 관련하여 다른 단어를 이미 말하고 있는지 확실하지 않지만 노드를 파일로 사용하려면 오히려 기존 노드를 기존 파일과 연관시키는 대신 파일에서 시작하여 노드를 생성하십시오.

일반적으로 나는 프로그래밍 방식으로 할 것입니다. 가져 오기 디렉토리의 각 기존 파일에 대해 $node 개체를 만든 다음 node_save($node)을 호출하여 Drupal에 저장합니다.

물론 $node 객체를 빌드 할 때 파일 관리에 사용하는 모듈의 API 함수를 호출해야합니다. 유사한 작업을 수행하기 위해 작성한 샘플 코드는 다음과 같습니다. 이 시나리오에서 I는

  • product이었다 생성물 노드의 제품 판에 대해 CCK 필드 ...

    • field_sheet 된 생성물 (추가 필드와 노드)에 제품 판 부착되므로시켰다 노드 유형
    • $sheet_file은 제품 시트 파일에 대한 완전한 참조 (경로 + 파일 이름)입니다. 그래서 예를

    :

    // Load the CCK field 
    $field = content_fields('field_sheet', 'product'); 
    // Load the appropriate validators 
    $validators = array_merge(filefield_widget_upload_validators($field)); 
    // Where do we store the files? 
    $files_path = filefield_widget_file_path($field); 
    // Create the file object 
    $file = field_file_save_file($sheet_file, $validators, $files_path); 
    // Apply the file to the field, this sets the first file only, could be looped 
    // if there were more files 
    $node->field_scheda = array(0 => $file); 
    // The file has been copied in the appropriate directory, so it can be 
    // removed from the import directory 
    unlink($sheet_file); 
    

    BTW : 당신이 MP3 메타 데이터를 읽고 라이브러리를 사용하는 경우, 당신은 $ 노드 -> 제목과 합리적인 방법으로 다른 속성을 설정할 수 있습니다.

    희망이 도움이됩니다.

  • +0

    위의 예에서 $ sheet_file은 무엇입니까? – googletorp

    +0

    $ sheet_file이 파일 소스에 대한 경로 문자열 인 것처럼 보입니다. 어쨌든 프로세스에서 파일 당 노드를 만드는 것은 좋은 생각입니다. 그러나 노드가 여러 필드를 가질 경우 실제적인 문제가 될 수도 있습니다. – googletorp

    +0

    내 생각에 요지는 내 디렉터리의 각 오디오 파일을 반복하고 다음과 같은 노드를 만듭니다. 각 파일은 파일 이름 (또는 사용자의 위치로 id3 데이터)을 사용하여 노드에 대한 정보를 입력합니다. 내가 생각하기에, 드루팔 노드 api를 사용해야 할 필요가 있는데, 이것을 달성하기 위해 커스텀 모듈을 작성하는 것이 맞습니까? 도움 주셔서 감사합니다. – ldweeks

    0

    file_import module은 원하는 것만 정확하게 수행하지는 않지만 (노드 대신 노드 첨부 파일을 생성합니다.) 원하는 모듈을 Drapal API와 함께 지침으로 사용하는 것이 상대적으로 간단합니다.

    관련 문제