我是drupal的新手。我想创建一个弹出窗口,其中包含名称,电子邮件字段,下载和关闭按钮,当用户单击弹出窗体要显示的下载链接时,用户在验证后提供名称和电子邮件,文件已由用户下载,还有多少用户已下载我如何点他的
答案 0 :(得分:2)
您可以使用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);
}
这将在提交表格时下载文件。
要使表单弹出,请在表单设置下将表单作为块提供,并将表单块放在任何jQuery插件中,如thickbox。