2013-05-14 3 views
0

드루팔 (Drupal)에 익숙하지 않습니다. 이름, 이메일 필드, 다운로드 및 닫기 버튼을 사용하여 팝업 양식을 만들고 싶습니다. 사용자가 다운로드 링크를 클릭하면 팝업 양식이 표시되기를 원하는데, 사용자가 파일을 다운로드 한 후 이름과 이메일을 보내고 얼마나 많은 파일을 다운로드했는지 표시하고 싶습니다. 사용자가 어떻게 다운로드 할 수 있습니까?drupal7에서 파일 다운로드 팝업 폼을 만드는 방법

답변

1

Webform protected downloads 모듈을 사용할 수 있습니다.이 모듈을 사용하면 파일을 다운로드하기 전에 이메일 필드를 최소한 입력해야합니다. 원하는만큼 파일을 추가 할 수 있습니다. 이 대답을 참조하십시오 Fill form before download

수동으로 수행하려면 webform에 필요한 필드가 있어야하며 hook_form_alter을 사용할 수 있습니다. 당신 template.php에서

function YOUR_THEME_form_alter(&$form, &$form_state, $form_id){ 
     if($form_id == "YOUR_WEBFORM_ID") 
     { 
      $form['#submit'][] = 'download_file'; 
     } 
    } 

    function download_file(){ 

     $file_path = variable_get('file_public_path', conf_path() . '/files'); 
     $file_name = $file_path."/YOUR_FILE"; 
     $file = fopen($file_name, 'r'); 
     $file_size = filesize($file_name); 

     header("Content-type: application/pdf"); // add here more headers for diff. extensions 
     header("Content-Type: application/force-download"); 
     header("Content-Type: application/download"); 
     header("Content-Description: File Transfer"); 
     header("Content-Disposition: attachment; filename=\"". urlencode('FILENAME')."\""); // use 'attachment' to force a download 
     header("Content-length: $file_size"); 
     header("Cache-control: private"); //use this to open files directly 
     while(!feof($file)) { 
      $buffer = fread($file, 2048); 
      echo $buffer; 
      flush(); 
     } 
     $url = $_SERVER['REQUEST_URI']; 
     header('Location:'. $url); 
     fclose ($file); 
} 

이것은 양식을 제출할 때 파일을 다운로드합니다.

양식을 팝업으로 만들려면 양식을 양식 설정에서 블록으로 사용 가능하게 만들고 양식 블록을 thickbox과 같은 jQuery 플러그인에 넣으십시오.

+0

drupal 후크에 필요한 멋진 코드입니다. 하지만 문제는 파일을 다운로드 한 후에 다시 양식으로 돌아 가지 않습니다. 이 문제에 대한 소중한 제안. – Bharanikumar

+0

@ Bharanikumar와 같은 일에 관심이 있습니다. 또한 관리자로부터 파일을 추가해야합니다. 그 일을하는 방법을 알고 있습니까? – Ionut

관련 문제