Drupal7音频播放器下载
时间:2020-03-05 15:25:32 来源:igfitidea点击:
在这篇文章中,我想解释如何有一个下载按钮的音频文件连同一个音频播放器。
我的目标是允许用户使用媒体播放器播放音频文件,也允许他们使用按钮下载文件。
为此,我创建了一个名为"Media"的内容类型,其中"field_audio"作为音频文件字段。
我选择了Mediafront模块作为音频播放器。
我希望设置音频播放器不会那么困难,所以让我们进入编码部分。
我使用hook_menu()注册drupal路径来定义如何处理音频下载链接。
function kf_menu() {
$items['download/media/%file'] = array(
'page callback' => 'kf_download_file',
'page arguments' => array(2),
'access arguments' => array('view media'),
'type' => MENU_CALLBACK,
);
return $items;
}
代码的重要部分在菜单回调中,因为这部分代码使用HTTP将文件传输到客户机。
function kf_download_file($file) {
if($file) {
file_transfer($file->uri, array('Content-Type' => 'audio/mpeg', 'Content-Disposition' => 'attachment; filename="' . $file->filename . '"', 'Content-Length' => $file->filesize));
}
}
因为我们告诉drupal如何处理"download/media/%file"路径,所以我们需要为节点生成一个下载链接。
我使用hook_node_view()创建并显示下载链接。
function kf_node_view($node, $view_mode, $langcode) {
if ($node->type == 'media' && $view_mode == 'full') {
if (isset($node->field_audio[LANGUAGE_NONE][0]) && !empty($node->field_audio[LANGUAGE_NONE][0])) {
$file = $node->field_audio[LANGUAGE_NONE][0];
$file_fid = $file['fid'];
$audio_download = l(t('Download this file'), 'download/media/' . $file_fid, array('attributes' => array('class' => array('audio-download'))));
$node->content['download_link'] = array(
"#markup" => $audio_download,
"#weight" => 10
);
}
}
return $node;
}
最后,我们需要在node\ view函数中返回$node。

