我的是discuz3.4,如果要插入音乐的话,编辑器还是使用的flash来播放,但是chrome默认已经屏蔽flash了,所以也就无法播放了。所以我们得改改让它使用html5的audio标签来播放。
找到function_discuzcode.php文件,里面有parseaudio函数,这个是用来解析编辑器里的音频链接的,通过这个函数我们可以看到,它是根据不同的后缀执行不同的方法,我们现在只是说下mp3的链接。
原来如果dz判断是MP3的话,会返回这样的代码:
看不懂不要紧,主要是知道,这里会把编辑器里的xxxxx.mp3来替换成上面的代码。其中mp3的链接变量就是$url。我们现在完全可以替换原来的返回内容,我直接该称改了下面这样:
这样就是用html5标签来替换原来的flash播放了。
但是还有个问题,手机端无法播放,查看代码才知道,dz在解析时会判断手机端,如果是手机端,那么直接把[audio]标签换成[media]标签,导致手机上直接显示的[media]xxx.mp3[/media],不清楚为啥dz要这么做,改起来其实也很简单,去掉判断手机和pc的代码即可,下面就是判断的代码,你应该知道怎么做的。
- if(!defined('IN_MOBILE')) {
- if(strpos($msglower, '[/media]') !== FALSE) {
- $message = preg_replace_callback("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is", $allowmediacode ? 'discuzcode_callback_parsemedia_12' : 'discuzcode_callback_bbcodeurl_2', $message);
- }
- if(strpos($msglower, '[/audio]') !== FALSE) {
- $message = preg_replace_callback("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/is", $allowmediacode ? 'discuzcode_callback_parseaudio_2' : 'discuzcode_callback_bbcodeurl_2', $message);
- }
- if(strpos($msglower, '[/flash]') !== FALSE) {
- $message = preg_replace_callback("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", $allowmediacode ? 'discuzcode_callback_parseflash_234' : 'discuzcode_callback_bbcodeurl_4', $message);
- }
- } else {
- if(strpos($msglower, '[/media]') !== FALSE) {
- $message = preg_replace("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is", "[media]\\2[/media]", $message);
- }
- if(strpos($msglower, '[/audio]') !== FALSE) {
- $message = preg_replace("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/is", "[media]\\2[/media]", $message);
- }
- if(strpos($msglower, '[/flash]') !== FALSE) {
- $message = preg_replace("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", "[media]\\4[/media]", $message);
- }
- }
复制代码
有关PHP系统、Discuz或网站等各种问题,可以联系QQ1069971363寻求付费支持
|