手机版支持播放外链视频的方法,可支持触屏版,也可支持标准版。
首先找到discuz的ubb代码解析文件(source/function/function_discuzcode.php),在大约199行的时候可以看到,如果用户打开的是手机版,那么[media]、[audio]、[flash]这3个标签都会被放弃解析,统一输出成[media]XXXXX[/media]这种格式。
首先改动[media]标签的解析,将第200行的代码:
-
$message =preg_replace("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is","[media]\\2[/media]", $message);
修改为:
-
$message =preg_replace("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is","", $message);
在来改动[flash]标签的解析,将205行的代码:
-
$message =preg_replace("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is","[media]\\4[/media]", $message);
修改为:
-
$message =preg_replace("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is","", $message);
然后修改模版文件(template/default/touch/forum/viewthread.htm),在任意一个JS标签中加入解析视频的代码:
-
function openVideo(a,b) {
-
$(a).html('');
-
var w =$(a).width();
-
var h = w *0.85;
-
if(/youku/.test(b)){//解析优酷
-
b =b.match(/id_(.*?)\.html|sid\/(.*?)\/v/);
-
b ='http://player.youku.com/embed/' + (b[1] ? b[1] : b[2]);
-
}elseif(/bilibili|acg\.tv/.test(b)){ //解析B站
-
b =b.match(/o\/av(.*?)\/|aid=(.*?)&/);
-
b ='http://www.bilibili.com/video/av' + (b[1] ? b[1] : b[2]);
-
}else{
-
$(a).html('不支持此视频地址显示:' + b);
-
return;
-
}
-
$(a).append('');
-
$(a).children('iframe').load(function(){
-
$(a).children('img').remove();
-
$(a).children('iframe').css({'width':w,'height':h});
-
})
-
}
以上完成修改,可以用手机打开一个有视频的帖子看看效果了
原文:http://sunxboy.iteye.com/blog/2251277