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中的页面缓存机制来实现,这样能够在一定程度上提高系统的反应速度,增强用户体验。具体实现,这里就不再详述。

文库: