学习moodle 页面知识点
一.简单的页面布局
代码如下(示例):
require_once('../../config.php');
$cmid = required_param('id', PARAM_INT);
$cm = get_coursemodule_from_id('mymodulename', $cmid, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
require_login($course, true, $cm);
$PAGE->set_url('/mod/mymodulename/view.php', array('id' => $cm->id));
$PAGE->set_title('My modules page title');
$PAGE->set_heading('My modules page heading');
二.设置页面URL的三种方式
代码如下(示例):
$PAGE->set_url(new moodle_url('/path/to/your/file.php', array('key' => 'value', 'id' => 3)));
$PAGE->set_url('/path/to/your/file.php', array('key' => 'value', 'id' => 3));
$PAGE->set_url('/path/to/your/file.php?key=value&id=3');
前两种方法中的任何一种都是首选方法,因为它在处理 URL 时提供 100% 的准确性。在内部 set_url() 将你给它的任何东西转换成一个moodle_url 对象。 您提供给页面的 URL 将被许多 Moodle 核心 API 使用。最重要的是,它将用于为您的页面创建导航,因此准确设置它非常重要。
三.为页面设置上下文
在许多情况下,它会由Moodle设置好。
在某些情况下,会自动为您设置。比如,您的脚本调用requir_login(),那么您不需要再手动调用set_context()。这是因为require_login()会为您处理好。
如果您的脚本没有调用 require_login,或者您没有使用课程和/或模块调用它,那么您将需要手动设置上下文,如下所示:
在 Moodle 2.2 及更高版本中,代码如下(示例):
$PAGE -> set_context ( context_system :: instance ());
$PAGE -> set_context ( context_coursecat :: instance ( $categoryid ));
$PAGE -> set_context ( context_course :: instance ( $courseid ));
$PAGE -> set_context ( context_module :: instance ( $moduleid ));
在 Moodle 2.0+ 和 Moodle 2.1+ 中,代码如下(示例):
$PAGE -> set_context ( get_system_context ());
$PAGE -> set_context ( get_context_instance ( CONTEXT_COURSECAT , $categoryid ));
$PAGE -> set_context ( get_context_instance ( CONTEXT_COURSE , $courseid ));
$PAGE -> set_context ( get_context_instance ( CONTEXT_MODULE , $moduleid ));
四.页面布局
1、设置页面title标题
$PAGE->set_title('My modules page title');
必须设置,设置页面标题时,您只需提供要用于标题的字符串。它应该是一个基本字符串并且不包含 HTML。任何 HTML 都将被删除,因为在 HTML 头部的 <title> 标签中使用了标题。
2、设置页面head标题
$ PAGE - > set_heading (get_string ('pluginname' , 'local_myplugin' ));
必须设置,不管布局如何。显示在页面顶部。设置标题时只有一个参数,即用于标题的字符串。它应该是一个基本字符串并且不包含 HTML。
3、设置活动记录
$PAGE -> set_activity_record ( $activityrecord );
如果您使用课程模块调用了 require_login,或者您在 $PAGE 上手动设置了一个课程模块,那么您可能想做的另一件事是在 $PAGE 上设置活动模块记录。 当您已经自己获取活动记录时,最好这样做,在这种情况下,手动设置活动记录可能会将页面的查询次数减少 1。
4、设置块编辑功能
$PAGE -> set_blocks_editing_capability ( $strcapability );
使用此方法,您可以设置用户在能够编辑此页面上的块之前必须拥有的附加功能。 默认情况下使用“moodle/site:manageblocks”,但有时有理由使用不同的功能。
5、设置按钮
$PAGE -> set_button ( $htmlstring );
这允许您设置一些 HTML,这些 HTML 将显示在“打开编辑”按钮通常所在的导航栏中。
6、设置缓存
$PAGE -> set_cacheable ( true / false );
通过将此设置为 false,页面将与标题一起发送,以防止客户端缓存页面。默认为真。
7、设置首页课程
$PAGE -> set_category_by_id ( $categoryid );
允许您设置此页面显示的类别。调用此方法将强制将 $PAGE->course 设置为首页课程。
8、设置课程模块
$PAGE -> set_cm ( $coursemodulerecord );
像上面的设置页面一样,有时您需要手动设置 $PAGE 的课程模块。如果您调用它,您必须再次将上下文设置为课程模块的上下文。
9、设置课程
$PAGE -> set_course ( $ courserecord );
这允许您设置页面所属的课程。通常,当您调用 require_login 时,您提供的课程会自动发送到 $PAGE。 但是,如果您不想要求登录课程,但在 $PAGE 中需要它,那么您可以调用 set_course 并提供它。 请注意,如果您这样做,则在调用 set_context() 时必须使用课程的上下文
10、设置文档路径
$PAGE -> set_docs_path ( $strpath );
通常这会自动为您构建,但在某些情况下您可能需要手动设置它。 这允许您有多个页面都指向同一个文档页面,而不是每个页面都需要一个文档页面。 文档页面链接通常由页脚中的主题显示。
11、设置集中控制
$PAGE -> set_focuscontrol ( $ controlid );
如果您传递此方法,则当页面在客户端上加载时,元素 id 将转移到具有相应 id 的元素。 在大多数情况下,使用此功能是一个非常糟糕的主意,因为在浏览器中自动更改焦点对于视力受损者和使用屏幕阅读器的人来说是一场噩梦。
12、设置标题菜单
$PAGE -> set_headingmenu ( $htmlstring );
13、
$PAGE -> set_other_editing_capability ( $strcapability );
14、 设置页面类型
$PAGE -> set_pagetype ( $strpagetype );
15、
$PAGE -> set_periodic_refresh_delay ( $intdelay );
16、
$PAGE -> set_popup_notification_allowed ( true / false );
17、设置子页面
$PAGE -> set_subpage ( $strsubpage );
18、给页面body添加类名
$PAGE -> add_body_class ( $strcssclass );
将 CSS 类添加到将由输出 API 作为标题的一部分打印的正文标记。 这对于向描述页面内容的 body 标签添加类很有用,并且可能需要为整个页面设置样式,或者包含可能对在 JavaScript 中查找有用的指示符类。
19、给页面body添加一组类名
$PAGE -> add_body_classes ( $arrayofclasses );
将一组 CSS 类添加到 body 标记。有关更多详细信息,请查看上面对 add_body_class 的评论。
20、
$PAGE -> force_settings_menu ();
Theme boost 最好为您的活动/资源找到一个放置设置齿轮的地方,但是如果由于某种原因它没有显示,您可以手动设置要在页面上显示的设置齿轮。这应该在显示主要内容之前调用。此设置当前仅显示 theme_boost 上的设置齿轮。
五 获取页面信息
、
$var = $PAGE->activityrecord;
、
$var = $PAGE->blockmanager;
、
$var = $PAGE->bodyid;
、
$var = $PAGE->categories;
、
$var = $PAGE->category;
、
$var = $PAGE->cm;
、
$var = $PAGE->course;
、
$var = $PAGE->devicetypeinuse;
、
$var = $PAGE->headerprinted;
、
$var = $PAGE->heading;
、
$var = $PAGE->navbar;
、
$var = $PAGE->requires;
、
$var = $PAGE->settingsnav;
、
$var = $PAGE->theme;
、
$var = $PAGE->title;
、
$var = $PAGE->url;
六
1、get_string
get_string ( 'userpreferences' , 'certificate' );
根据所使用的语言获取适当的字符串,如果当前语言是英语,或文本的相关翻译,函数调用get_string(‘editingquiz’, ‘mod_quiz’)将返回“Editing quiz”。这里的字符串标识符是“editingquiz”,字符串由“mod_quiz”组件(即测验活动模块)提供。
2、admin_externalpage_setup
admin_externalpage_setup('tooldemo');
admin_externalpage_setup('editusers');
admin_externalpage_setup(‘tooldemo’),它调用 require_login 并对管理页面执行权限检查。
3、get_renderer
$PAGE -> get_renderer ( 'tool_demo' );
这将获取 plugin_renderer_base 类的一个实例,我们用它来为我们的页面创建所有输出。Themers 可以子类化这个渲染器来覆盖特定的渲染方法,以便自定义 Moodle 的输出。见Output_renderers获取更多信息,并Overriding_a_renderer有关主题制作怎么能自定义渲染器的信息。
4、
get_string ( 'userpreferences' , 'certificate' );
5、
get_string ( 'userpreferences' , 'certificate' );
6、
get_string ( 'userpreferences' , 'certificate' );
|