0

我是drupal的新手。我想创建一个弹出表单,其中包含名称、电子邮件字段、下载和关闭按钮,当用户单击要显示的弹出表单的下载链接时,用户在验证文件已被用户下载后给出名称和电子邮件以及多少用户已经下载了我怎么才能点他的

4

1 回答 1

2

您可以使用受 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 插件中,例如thinbox

于 2014-01-23T10:29:24.957 回答