moodle架构分析---表现层的设计(二)
3、针对导航条的实现,一般是直接调用build_navigation函数即可。使用方法可以看下面一个例子。
$newaccount = get_string('newaccount');$login = get_string('login');if (empty($CFG->langmenu)) {$langmenu = '';} else {//获得语言列表$currlang = current_language();$langs = get_list_of_languages();//生成语言下拉列表$langmenu = popup_form ("$CFG->wwwroot/login/signup.php?lang=", $langs, "chooselang", $currlang, "", "", "", true);}//定义导航数组$navlinks = array();$navlinks[] = array('name' => $login, 'link' => "index.php", 'type' => 'misc');$navlinks[] = array('name' => $newaccount, 'link' => null, 'type' => 'misc');// 这里可以添加更多的导航信息,省略//生成导航$navigation = build_navigation($navlinks);
这里需要注意的是,build_navigation函数并不直接把生成的html发送到浏览器中,而是作为返回值返回。
4、针对页面头部的实现,一般是直接调用print_header函数即可,即
print_header($newaccount, $newaccount, $navigation, $mform_signup->focus(), "", true, "$langmenu");
这样,就把生成的头部文件发送到浏览器中了。print_header的实现,会根据系统的主题/皮肤,找到header.html,并进行处理。
ob_start();include($CFG->header); //$CFG->header = $CFG->themedir .'/'. $theme .'/header.html';$output = ob_get_contents();ob_end_clean();
更加详细请查看lib/weblib.php文件的实现。
5、针对页面底部的实现,一般是在业务逻辑的代码最后面,直接调用print_footer函数即可,即
print_footer();
print_footer的实现与print_header一样,都是借用php中的页面缓存机制来实现,这样能够在一定程度上提高系统的反应速度,增强用户体验。具体实现,这里就不再详述。
来源:http://www.goodu.info/gc/taxonomy/term/137
moodle架构分析---表现层的设计(二)相关推荐
- moodle架构分析---表现层的设计(一)
Moodle在表现层的实现有多种机制,分别针对页面.表单.导航条.页面头部.页面底部等. 1.针对页面的实现,直接编辑HTML页面,然后在业务逻辑处理完毕之后,include编辑好的html页面即可. ...
- NET 应用架构指导 V2 学习笔记(十九) 表现层组件设计指导
5 决定数据绑定的需求 数据绑定在应用中,提供了一种在用户界面的控件和数据或者逻辑组件建立连接的方式.数据绑定允许你将数据库的数据,或者是其他结构的数据进行显示或者和他们进行交互.数据绑定是绑定目标( ...
- 面向对象——三层架构(表现层、业务层、持久层)
① 持久层:采用DAO模式,建立实体类和数据库表映射(ORM映射).也就是哪个类对应哪个表,哪个属性对应哪个列.持久层 的目的就是,完成对象数据和关系数据的转换. ② 业务层:采用事务脚本模式.将一个 ...
- moodle架构分析---数据连接层的设计
1.数据连接抽象类ADOConnection Moodle支持Mysql.Oracle.Sql Server等多种数据库.由于不同的数据库操作有所不同,为支持多种数据库,Moodle定义了数据库连接抽 ...
- Linux的设备驱动程序架构分析之MMC / SD(二)
转自:http : //blog.csdn.net/liuhaoyutz 内核版本:3.10.1 一,s3cmci_ops分析 在上一篇文章中我们分析了Mini2440 MMC / SD驱动的探针函数 ...
- 系统架构师-基础到企业应用架构-表现层
一.前言 最近也许是由于假期的原因,我发布的文章的速度变慢了,对大家说下抱歉,这个系列的确我很难写,感谢大家对我的支持和关注,的确我在发布后得到大家的支 持和认可,让我有了更多的动力,之前发布的有些内 ...
- b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释
b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释 继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更 ...
- 领域驱动实践总结(基本理论总结与分析V+架构分析与代码设计+具体应用设计分析)
目录 领域驱动实践总结一:基本理论总结与分析 一.领域驱动设计两大设计:战略设计和战术设计 (一)战略设计 1.出发角度与目标 2.实现方式:事件风暴与模型确立(用例分析.场景分析和用户旅程分析) 3 ...
- Android10.0 日志系统分析(二)-logd、logcat架构分析及日志系统初始化-[Android取经之路]
摘要:本节主要来讲解Android10.0 日志系统的架构分析,以及logd.logcat的初始化操作 阅读本文大约需要花费15分钟. 文章首发微信公众号:IngresGe 专注于Android系统级 ...
最新文章
- php查询mysql放到数组中_php查询mysql数据库并将结果保存到数组的方法
- apue.h头文件(UNIX环境高级编程)
- 最全Windows下搭建go语言开发环境以及开发IDE
- 人可以拒绝任何东西,但绝对不可以拒绝成熟
- 使用 ale.js 制作一个小而美的表格编辑器(4)
- linux 挂载windows共享目录 is not a valid block device
- python滑动手机屏幕_appium+python自动化24-滑动方法封装(swipe)
- 程序员面试金典——18.13 最大字母矩阵
- 华为ICT大赛网络赛道考试范围
- Excel 各种密码的破解,大全建议收藏!
- Java工作小组名称_小组名称和口号
- 深度搜索(DFS),一种用于遍历和搜索的算法
- C/C++中文帮助手册
- 解决Laragon的nginx/apache重启后网站配置文件被修改的问题 - This file has been modified by another program - 文件auto.conf
- 渐进式web应用程序_为什么渐进式Web应用程序很棒,以及如何构建一个
- 面试心得与总结---BAT、网易、蘑菇街
- acwing 3496. 特殊年份(蓝桥杯)
- 记录舒马赫告别F1车坛(转载)
- kepserver 作为opc server 连接西门子PLC 配置
- lesson 17 always young 青年永驻-用in with表穿戴的用法-must be-