Discuz! X3在手機版中播放諸如優酷之類視頻的方法

手機版支持播放外鏈視頻的方法,可支持觸屏版,也可支持標準版。

首先找到discuz的ubb代碼解析文件(source/function/function_discuzcode.php),在大約199行的時候可以看到,如果用戶打開的是手機版,那麼[media]、[audio]、[flash]這3個標籤都會被放棄解析,統一輸出成[media]XXXXX[/media]這種格式。

首先改動[media]標籤的解析,將第200行的代碼:

  1. $message =preg_replace("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is","[media]\\2[/media]", $message);

修改爲:

  1. $message =preg_replace("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is","", $message);

在來改動[flash]標籤的解析,將205行的代碼:

  1. $message =preg_replace("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is","[media]\\4[/media]", $message);

修改爲:

  1. $message =preg_replace("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is","", $message);

然後修改模版文件(template/default/touch/forum/viewthread.htm),在任意一個JS標籤中加入解析視頻的代碼:

  1. function openVideo(a,b) {
  2.        $(a).html('');
  3.        var w =$(a).width();
  4.        var h = w *0.85;
  5.        if(/youku/.test(b)){//解析優酷
  6.              b =b.match(/id_(.*?)\.html|sid\/(.*?)\/v/);
  7.              b ='http://player.youku.com/embed/' + (b[1] ? b[1] : b[2]);
  8.        }elseif(/bilibili|acg\.tv/.test(b)){ //解析B站
  9.              b =b.match(/o\/av(.*?)\/|aid=(.*?)&/);
  10.              b ='http://www.bilibili.com/video/av' + (b[1] ? b[1] : b[2]);
  11.        }else{
  12.             $(a).html('不支持此視頻地址顯示:' + b);
  13.             return;
  14.        }
  15.        $(a).append('');
  16.        $(a).children('iframe').load(function(){
  17.             $(a).children('img').remove();
  18.             $(a).children('iframe').css({'width':w,'height':h});
  19.        })
  20. }

以上完成修改,可以用手機打開一個有視頻的帖子看看效果了



原文:http://sunxboy.iteye.com/blog/2251277

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章