`
awfwxf
  • 浏览: 70370 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

supesite系统视频播放功能的分析及设置默认打开页面播放

阅读更多
最近做的一个php项目需求中有视频这个频道,于是研究了一下supesite,不过它是在资讯中可以插入多个视频,点击后才能播放,同时又能再次隐藏。于是看了一下代码.记录如下:

分析发现,当我们发布一篇含有视频的新闻时,在资讯查看页面(news.view.html.php)源文件里显示如下效果:


<div id="article_body">
 
<P>百县视频资讯测试喽百县视频资讯测试喽</P>
<P><BR>Flash: <KBD class=showflash title=http://player.youku.com/player.php/sid/XMTM4OTAzNjUy/v.swf>http://player.youku.com/player.php/sid/XMTM4OTAzNjUy/v.swf</KBD><BR></P></div>
</div> 


但是直接从代码上分析怎么会产生那种效果呢?答案就出在class=showvideo里,我们可以先在template/css/style.css里找到showvideo的样式如下:

#articlebody kbd.showvideo{     
    font: 1em Arial, Helvetica, sans-serif;     
    cursor: pointer;     
   text-decoration: underline;     
}   


还有一个就是最关键的地方: addMediaAction('articlebody');这个JS函数的用途就是将articlebody容器里的一些方法赋予一些动作。接着找到include/js/common.js,里面有如下的代码是控制这个效果的。


function getbyid(id) {
if (document.getElementById) {
  return document.getElementById(id);
} else if (document.all) {
  return document.all[id];
} else if (document.layers) {
  return document.layers[id];
} else {
  return null;
}
}
//显示隐藏媒体
function addMediaAction(div) {
var thediv = getbyid(div);
if(thediv) {
  var medias = thediv.getElementsByTagName('kbd');
  if(medias) {
   for (i=0;i<medias.length;i++) {
    if(medias[i].className=='showvideo' || medias[i].className=='showflash'|| medias[i].className=='showreal') {
     medias[i].onclick = function() {showmedia(this,400,400)};
    }
   }
  }
}
}
function showmedia(Obj, mWidth, mHeight) {
var mediaStr, smFile;
if ( Obj.tagName.toLowerCase()=='a' ) { smFile = Obj.href; } else { smFile = Obj.title; }
var smFileType = Obj.className.toLowerCase();
switch(smFileType){
  case "showflash":
   mediaStr="<p style='text-align: right; margin: 0.3em 0; width: 520px;'>[<a href='"+smFile+"' target='_blank'>全屏观看</a>]</p><object codeBase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='520' height='390'><param name='movie' value='"+smFile+"'><param name='quality' value='high'><param name='AllowScriptAccess' value='never'><embed src='"+smFile+"' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='520' height='390'></embed></OBJECT>";
   break;
  case "showvideo":
   mediaStr="<object width='520' classid='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6'><param name='url' value='"+smFile+"' /><embed width='520' type='application/x-mplayer2' src='"+smFile+"'></embed></object>";
   break;
  case "showreal":
   mediaStr="<object classid='clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA' width='520' height='390' id='RealMoviePlayer' border='0'><param name='_ExtentX' value='13229'><param name='_ExtentY' value='1058'><param name='controls' value='ImageWindow,controlpanel'><param name='AUTOSTART' value='1'><param name='CONSOLE' value='_master'><param name='SRC' value='"+smFile+"'><EMBED SRC='"+smFile+"' WIDTH='520' type='audio/x-pn-realaudio-plugin'  HEIGHT='390' NOJAVA='true' CONTROLS='ImageWindow,controlpanel' AUTOSTART='true' REGION='newsregion' CONSOLE='one'></EMBED></object>";
}

var mediaDiv = document.getElementById(escape(smFile.toLowerCase()));

if (mediaDiv) {
  Obj.parentNode.removeChild(mediaDiv);
} else {
  mediaDiv = document.createElement("div");
  mediaDiv.style.cssText = "text-align:center;text-indent:0"; 
  mediaDiv.id = escape(smFile.toLowerCase());
  mediaDiv.innerHTML = mediaStr;
  Obj.parentNode.insertBefore(mediaDiv,Obj.nextSibling);
}
return false;
}

从上面我们可以看出,当系统运行addMediaAction('articlebody'); 时,首先JS会循环articlebody容器内的所有以KBD开头的语句,再根据视频播放的模式不同调用不同的方法.播放模式包含showflash,showvideo,showreal。然后开始调用showmedia函数,从 if ( Obj.tagName.toLowerCase()=='a' ) { smFile = Obj.href; } else { smFile = Obj.title; }这一行我们就可以看出来,当我们点击视频标题(如aaaaaaaaaaa)的时候,JS会通过点击的对象获取title(http://player.youku.com/player.php/sid/XMTM4OTAzNjUy/v.swf)作为视频播放的地址,串接出视频播放器代码并创建播放容器显示出来。反之则将播放容器通过removeChild移除。


*如果想让插入的视频或 FLASH 直接播放,下面的修改则可以设置为默认直接播放。

将下面这段:

//显示隐藏媒体
function addMediaAction(div) { 
var thediv = getbyid(div); 
if(thediv) {  
var medias = thediv.getElementsByTagName('kbd');  
if(medias) {   
for (i=0;i<medias.length;i++) {   
 if(medias[i].className=='showvideo' || medias[i].className=='showflash'|| medias[i].className=='showreal') { 
    medias[i].onclick = function() {showmedia(this,400,400)};    }   
}  
} 
}
}



修改为
//显示隐藏媒体
function addMediaAction(div) { 
var thediv = getbyid(div); 
if(thediv) {  
var medias = thediv.getElementsByTagName('kbd');  
if(medias) {  
 for (i=0;i<medias.length;i++) {   
 if(medias[i].className=='showvideo' || medias[i].className=='showflash'|| medias[i].className=='showreal') {
     medias[i].onclick = function() {
       showmedia(this,400,400)
    };    
       showmedia(medias[i],400,400);    
   }   
   }  
  } 
}
}

也就是在for循环中加上showmedia(medias[i],400,400);这句调用就可以了~!


希望能帮助到需要的朋友~~!
1
0
分享到:
评论

相关推荐

    supesite详细文本教程

    通过手册,你可以了解如何配置站点基本信息,创建栏目,发布新闻、图片和视频等内容,以及设置会员系统和评论功能。 2. **Supesite 文件与目录说明** Supesite 的文件结构清晰,包括了核心程序文件、模板文件、...

    SupeSite中个人空间管理分类的使用

    SupeSite是一款功能强大的社区管理系统,被广泛应用于构建各类在线社区和论坛。其中,“个人空间管理分类”功能是SupeSite中的一项重要特性,它允许用户对个人空间内的各种内容进行细致的分类管理,包括但不限于日志...

    SupeSite7.0_SC_GBK

    在SupeSite系统中,用户可能可以上传图片、文档、视频等各种类型的文件,这些文件会被存储在此目录下。为了保证网站的稳定性和安全性,管理员需要合理设置权限,防止非法文件上传或恶意攻击。 总的来说,SupeSite ...

    supesite开发文档.pdf

    SupeSite是一款强大的网站内容管理系统,它提供了丰富的功能来构建和管理各种类型的在线社区,如博客、资讯、论坛等。这个开发文档详细介绍了SupeSite的各个关键部分,包括全局设置、各模块的特性和配置,以及模板...

    SupeSite 7.0 用户手册

    SupeSite 是一套独立的内容管理系统(CMS),并且拥有强大对 Discuz! 论坛信息和 UCenter Home 个人空间信息聚合的功能。为站长提供了一个创新的社区门户解决方案。通过 SupeSite 软件,社区论坛相关内容可以完成...

    supesite /discuz 怎么获得用户名

    在supesite /discuz系统中,有时候我们需要获取当前用户的用户名以便进行个性化设置或者实现某些特定功能。本文将详细介绍如何通过修改`batch.panel.php`文件来实现这一目标。 #### 文件定位与修改 1. **打开指定...

    SupeSite资讯分类详解

    - **SupeSite**是一款功能强大的内容管理系统(Content Management System, CMS),它主要用于构建和管理各种类型的网站,特别是那些需要频繁更新内容的站点。SupeSite提供了一个灵活易用的平台,帮助用户轻松管理网站...

    SupeSite6.0.1X-Space4.0.1GBK.zip

    通过安装使用SupeSite/X-Space,网站建设者可以轻松、迅速和高效的构建拥有高度Web2.0特性的社区门户,为站点的会员提供包含日志(博客)、影音视频(播客)、群组(圈子)、相册图片、商品买卖、软件分享、书签收藏等在内...

    SupeSite7.5 仿站长网模板风格

    在互联网内容管理领域,SupeSite是一款广泛使用的开源网站管理系统,以其强大的功能和灵活性受到众多网站管理员的青睐。此次我们关注的是SupeSite7.5版本,它特别引入了一种仿站长网的模板风格,为用户提供了更加...

    supesite7.5 采集 所有CSDN下载的采集工具打包汇总

    综上所述,这个压缩包提供了一系列用于采集Supesite7.5相关数据的工具,涵盖了从自动化执行、网页解析到特定领域信息抓取的多个方面,对于想要对Supesite7.5网站进行数据分析或监控的用户来说,是一份宝贵的资源。...

    SupeSite采集器的详细介绍

    SupeSite采集器是一款专门针对SupeSite平台设计的数据抓取工具,主要用于自动化或半自动化地从互联网上获取信息,并将其整合到SupeSite系统中。根据官方文档介绍,SupeSite采集器提供了两种采集方式:**手工采集**与...

    supesite 二次开发手册

    SupeSite 模板文件存放于 templates 文件夹中,默认模板文件夹为 default 文件夹。模板文件的命名规则遵循“前缀”+“-”+“文件名称”+“.HTML.PHP”方式命名,前缀为频道分类,文件名称为文件的功能的英文名称。 ...

    supesite 自动采集机器人

    标题 "supesite 自动采集机器人" 涉及的核心技术是SupeSite系统的自动采集功能,这是一种网站内容管理系统(CMS)的高级特性,用于自动化地从其他网站或数据源获取信息并将其整合到自己的站点上。这通常涉及到网络...

    discuz,supesite,uchome

    Supesite提供了一套完善的后台管理系统,包括频道管理、文章发布、模板编辑、权限控制等功能,帮助网站管理员高效地运营和维护站点。 3. UCenter UCenter是Comsenz公司的统一用户中心系统,它连接并管理多个Comsenz...

    supesite使用文档

    通过阅读《SupeSite.X-Space用户手册.chm》提供的详细指导,用户将能够全面了解并熟练掌握 Supesite 的各项功能,从而创建一个高效、易用且功能丰富的网站。这份文档是 Supesite 用户的必备参考资料,无论是初学者...

Global site tag (gtag.js) - Google Analytics