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架构分析---表现层的设计(二)相关推荐

  1. moodle架构分析---表现层的设计(一)

    Moodle在表现层的实现有多种机制,分别针对页面.表单.导航条.页面头部.页面底部等. 1.针对页面的实现,直接编辑HTML页面,然后在业务逻辑处理完毕之后,include编辑好的html页面即可. ...

  2. NET 应用架构指导 V2 学习笔记(十九) 表现层组件设计指导

    5 决定数据绑定的需求 数据绑定在应用中,提供了一种在用户界面的控件和数据或者逻辑组件建立连接的方式.数据绑定允许你将数据库的数据,或者是其他结构的数据进行显示或者和他们进行交互.数据绑定是绑定目标( ...

  3. 面向对象——三层架构(表现层、业务层、持久层)

    ① 持久层:采用DAO模式,建立实体类和数据库表映射(ORM映射).也就是哪个类对应哪个表,哪个属性对应哪个列.持久层 的目的就是,完成对象数据和关系数据的转换. ② 业务层:采用事务脚本模式.将一个 ...

  4. moodle架构分析---数据连接层的设计

    1.数据连接抽象类ADOConnection Moodle支持Mysql.Oracle.Sql Server等多种数据库.由于不同的数据库操作有所不同,为支持多种数据库,Moodle定义了数据库连接抽 ...

  5. Linux的设备驱动程序架构分析之MMC / SD(二)

    转自:http : //blog.csdn.net/liuhaoyutz 内核版本:3.10.1 一,s3cmci_ops分析 在上一篇文章中我们分析了Mini2440 MMC / SD驱动的探针函数 ...

  6. 系统架构师-基础到企业应用架构-表现层

    一.前言 最近也许是由于假期的原因,我发布的文章的速度变慢了,对大家说下抱歉,这个系列的确我很难写,感谢大家对我的支持和关注,的确我在发布后得到大家的支 持和认可,让我有了更多的动力,之前发布的有些内 ...

  7. b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释

    b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释 继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更 ...

  8. 领域驱动实践总结(基本理论总结与分析V+架构分析与代码设计+具体应用设计分析)

    目录 领域驱动实践总结一:基本理论总结与分析 一.领域驱动设计两大设计:战略设计和战术设计 (一)战略设计 1.出发角度与目标 2.实现方式:事件风暴与模型确立(用例分析.场景分析和用户旅程分析) 3 ...

  9. Android10.0 日志系统分析(二)-logd、logcat架构分析及日志系统初始化-[Android取经之路]

    摘要:本节主要来讲解Android10.0 日志系统的架构分析,以及logd.logcat的初始化操作 阅读本文大约需要花费15分钟. 文章首发微信公众号:IngresGe 专注于Android系统级 ...

最新文章

  1. php查询mysql放到数组中_php查询mysql数据库并将结果保存到数组的方法
  2. apue.h头文件(UNIX环境高级编程)
  3. 最全Windows下搭建go语言开发环境以及开发IDE
  4. 人可以拒绝任何东西,但绝对不可以拒绝成熟
  5. 使用 ale.js 制作一个小而美的表格编辑器(4)
  6. linux 挂载windows共享目录 is not a valid block device
  7. python滑动手机屏幕_appium+python自动化24-滑动方法封装(swipe)
  8. 程序员面试金典——18.13 最大字母矩阵
  9. 华为ICT大赛网络赛道考试范围
  10. Excel 各种密码的破解,大全建议收藏!
  11. Java工作小组名称_小组名称和口号
  12. 深度搜索(DFS),一种用于遍历和搜索的算法
  13. C/C++中文帮助手册
  14. 解决Laragon的nginx/apache重启后网站配置文件被修改的问题 - This file has been modified by another program - 文件auto.conf
  15. 渐进式web应用程序_为什么渐进式Web应用程序很棒,以及如何构建一个
  16. 面试心得与总结---BAT、网易、蘑菇街
  17. acwing 3496. 特殊年份(蓝桥杯)
  18. 记录舒马赫告别F1车坛(转载)
  19. kepserver 作为opc server 连接西门子PLC 配置
  20. lesson 17 always young 青年永驻-用in with表穿戴的用法-must be-

热门文章

  1. 7 QM配置-质量计划配置-定义检验方法的编号范围
  2. 68 SD配置-发票凭证配置-定义出具发票类型
  3. 31 SD配置-主数据-信用管理-定义自动信贷控制
  4. 14 FI配置-财务会计-定义未结清过帐期间变式
  5. Linux内核驱动如何编写?我们先从字符驱动入门开始
  6. 服务器安装三节点RabbitMQ集群(4)
  7. self-attention的作用,理解
  8. 完整的可按年份和月份查询数据并显示
  9. el-select下拉框组件el-option如何使用v-for动态渲染问题 - 方法篇
  10. “dedeCMS 提示信息!”跳转页,如何修改文字?