Scratch学科网站开发日志三:课程分类显示

在后台内容管理中的分类里,将栏目以一级分类存储。课程以目录分类形式表示,课程栏目下面,还有单元二级分类,而在单元二级分类下还有课程名称这个三级分类了。

在前台,用户点击了课程栏目后,原本网站是显示该分类下的所有文章的,现在需要更改此页面,使其以目录形式(以后可能会更改,目前暂时以目录形式)显示课程下的所有单元和课程名称。

code

1、复制在前台主题目录下的Portal的list.html文件,并重命名为list_course_category.html,在后台将课程分类的列表模板设置为list_course_category.html

2、进入application/Portal/Controller,编辑ListController.class.php,在这里,需要准备输出的数据,以送到视图模板上呈现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   /**
* @param int $term 课程分类ID
* 获取课程下的分类,2个foreach则只深度为二
*/

public function course_category($term=1){
$this->terms_model = D("Portal/Terms");
$nbsp = '   ';
$icon = array('   │ ', '   ├─ ', '   └─ ');
$result = $this->terms_model->order(array("listorder"=>"asc"))->where('parent=1')->select();
$str = '';
foreach ($result as $r) {
$str = $str.'<tr><td>&nbsp;&nbsp;&nbsp;├─ '.$r['name'].'</td></tr>';
$child = $this->terms_model->order(array("listorder"=>"asc"))->where('parent='.$r['term_id'])->select();
foreach ($child as $c) {
$url=U('portal/list/index',array('id'=>$c['term_id']));
$str = $str.'<tr><td>&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;├─ <a href="'.$url.'" target="_blank">'.$c['name'].'</a></td></tr>';
}
}

$this->assign("course", $str);
}

index方法里在输出到模板之前调用上面写的方法,也就是在$this->display(":$tplname");之前增加如下代码:

1
2
3
if($tplname == 'list_course_category') {
$this->course_category(intval($_GET['id']));
}

3、在list_course_category.html文件里,将原来的列表显示内容相关代码删除,更改为如下代码:

1
2
3
4
5
<table class="table table-hover table-bordered table-list">
<tbody>
{$course}
</tbody>
</table>

前台暂时这样子显示(如下图),现在先将功能完善好,前端需要后面花大量时间来弄的。

课程截图

结束语

这样子写日志,貌似太花时间了,以后还是简单总结一下比较好,像这一次的写得太详细了。用来写这个的时间还不如继续做下一步的内容。