首先声明,本方法有点笨,不适合扩展,还有几个小bug
需要更好的效果只有通过二次开发的方式,让课程加载自己的css文件才能更好解决。
操作之前需要先在bb中建好课程栏目
1、将做好的html首页和images及css文件都放到平台的课程资源下面

2、首页链接index.html已经可以直接访问了,我们需要做的就是将课程的主页直接跳转到这个页面:
新建空白页->在编辑HTML状态用javascript实现跳转:top.location.href='',指定链接到刚刚上传的首页

个性化课程的原理是将自己的css通过javascript的方式在页面加载完之后再载入进来,覆盖系统自带的样式
index.html的代码:
<div id="container">
<div id="topnav">
<ul>
<li>
<a href="http://202.116.45.238/webapps/portal/execute/myPlaces?newWindow=true" target="_top">我的位置</a>
</li>
<li>
<a href="http://202.116.45.238/webapps/login?action=logout" target="_top">注销</a>
</li>
<li>
<a href="http://202.116.45.238" target="_top">平台首页</a>
</li>
</ul>
</div>
<div id="main"></div>
<ul id="nav">
<li><a href="content/1.html" class="li1" target="_parent"> </a></li>
<li><a href="content/2.html" class="li2"> </a></li>
<li><a href="content/3.html" class="li3"> </a></li>
<li><a href="content/4.html" class="li4"> </a></li>
<li><a href="content/5.html" class="li5"> </a></li>
<li><a href="content/6.html" class="li6"> </a></li>
<li><a href="content/7.html" class="li7"> </a></li>
<li><a href="content/8.html" class="li8"> </a></li>
</ul>
<ul id="subnav">
<li ><a href="content/9.html" class="li1" > </a></li>
<li><a href="content/10.html" class="li2"> </a></li>
<li><a href="content/11.html" class="li3"> </a></li>
<li><a href="content/12.html" class="li4"> </a></li>
<li><a href="content/13.html" class="li5"> </a></li>
</ul>
<div id="foot">
<span class="footer"> © 版权所有 2011</span>
</div>
</div>
content文件夹中每个文件都将通过iframe的方式加载一个课程栏目:
1.html的代码,其中iframe的src需要自己手动获取栏目的链接,详细请自行研究js部分
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>信息技术与课程整合示范课程</title>
<link type="text/css" rel="stylesheet" href="../images/style.css"/>
<script language="javascript">
function reinitIframe(){
var iframe = document.getElementById("demo");
try{
var bHeight = iframe.contentWindow.document.body.scrollHeight;
var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
var height = Math.max(bHeight, dHeight);
iframe.height = height;
}catch (ex){}
}
window.setInterval("reinitIframe()", 200);
function attach() {
var cssPath="http://202.116.45.238/bbcswebdav/courses/EIT002/new/images/style.css";
var id = window.frames["demo"].document.getElementById("editModeToggleLink");
if (id == null){
attachFile("demo",cssPath, "css");
}else{
var spans = window.frames["demo"].document.getElementById("editModeToggleLink").getElementsByTagName("span");
if(spans[0].innerHTML=="关闭"){
attachFile("demo",cssPath, "css");
}
}
};
function attachFile(iframeId,filename, filetype)
{
var head = window.frames[iframeId].document.getElementsByTagName('head').item(0);
if (filetype=="css"){ //判断文件类型
var fileref=window.frames[iframeId].document.createElement("link");
fileref.setAttribute("rel", "stylesheet") ;
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", filename);
}
if (filetype=="js"){ //判断文件类型
var fileref=window.frames[iframeId].document.createElement('script');//创建标签
fileref.setAttribute("type","text/javascript");//定义属性type的值为text/javascrip
fileref.setAttribute("language","JavaScript");
fileref.setAttribute("src", filename);//文件的地址
}
if (typeof fileref!="undefined")
head.appendChild(fileref);
if(window.frames[iframeId].frames["contentFrame"]){
var subhead;
subhead= window.frames[iframeId].frames["contentFrame"].document.getElementsByTagName('head').item(0);
subhead.appendChild(fileref);
}
}
</script>
</head>
<body onload="attach()">
<div id="container">
<div id="topnav">
<ul>
<li>
<a href="http://202.116.45.238/webapps/portal/execute/myPlaces?newWindow=true" target="_top">我的位置</a>
</li>
<li>
<a href="http://202.116.45.238/webapps/login?action=logout" target="_top">注销</a>
</li>
<li>
<a href="http://202.116.45.238" target="_top">平台首页</a>
</li>
</ul>
</div>
<div id="header"></div>
<iframe src="http://202.116.45.238/webapps/blackboard/content/listContentEditable.jsp?content_id=_15264_1&course_id=_108_1&mode=reset&courseTocLabel=%E7%AC%AC%E4%B8%80%E8%AE%B2+%E6%A6%82%E8%BF%B0" frameborder="0" name="demo" id="demo" width="100%" scrolling="no" onload="attach()"/>
</div>
</body>
</html>
加载进来的css文件,需要使用firebug或chrome浏览器查看html是由哪种样式控制,例如:

左边导航部分是由class为navPaletteContent控制,下面还有ul>li元素,我们重新设计后的css如下:
.navPaletteContent{
border:none;
}
.navPaletteContent #controlPanelPalette_contents{
border:1px solid #555;
}
div.buttonCm div.navPaletteContent{
background:url(nav_bottom.jpg) left bottom no-repeat;
padding-bottom:50px;
}
div.buttonCm div.navPaletteContent ul.courseMenu{
padding:120px 18px 0 18px;
background:url(nav_top.gif) left top no-repeat;
}
div.buttonCm div.navPaletteContent ul.courseMenu li{
background:none;
margin-right:2px;
/*
padding:7px 18px 4px 15px;
*/
margin-left:2px;
border-bottom:2px solid #eaeaea;
}
div.buttonCm div.navPaletteContent ul.courseMenu li a{
display:block;
text-decoration:none;
font-size:14px;
letter-spacing:2px;
background:url(ico.gif) right 70% no-repeat;
padding:0;
margin:0 0 3px 5px
}
div.buttonCm div.navPaletteContent ul.courseMenu li a:hover{
background:url(ico2.gif) right 70% no-repeat;
}
#courseMenuPalette div.navPaletteContent ul li a, #courseMenuPalette div.navPaletteContent ul li a span{
color:#3e3e3e;
}
#courseMenuPalette div.navPaletteContent ul li a:hover, #courseMenuPalette div.navPaletteContent ul li a:hover span{
color:#045988;
}
ps.因为时间关系,详细不解释,需要有一定的css基础才能做