Moodle 插件开发 - 无法在 index.php 文件中显示 html 标题

问题描述 投票:0回答:1

在 moodle 安装中,我在 mysitename/local/myfolder/index.php 中有以下 index.php 代码

基本上需要学生登录然后显示他们参加的所有moodle课程的代码。

这很好用,但是当我尝试添加简单的 HTML(如顶部的红色标题,上面写着“我的破折号”时,它根本不显示。我做错了什么?

代码

    <?php

require_once(__DIR__ . '/../../config.php');

require_login();

$PAGE->set_context(context_system::instance());
$PAGE->set_title('Dashboard');
$PAGE->set_heading('Dashboard');
$PAGE->navbar->add('Dashboard');
echo $OUTPUT->header();

global $USER, $DB;

$courses = enrol_get_users_courses($USER->id);

echo '<!DOCTYPE html>';
echo '<html>';
echo '<head>';
echo '<title>My Dashboard</title>';
echo '<style>';
echo 'h1 { color: red; font-weight: bold; }';
echo '</style>';
echo '</head>';
echo '<body>';
echo '<h1>My Dash</h1>';

if ($courses) {
    echo '<h2>Your courses:</h2>';
    echo '<ul>';
    foreach ($courses as $course) {
        echo '<li><a href="' . $CFG->wwwroot . '/course/view.php?id=' . $course->id . '">' . $course->fullname . '</a></li>';

        // Get quizzes for the current course
        $quizzes = $DB->get_records_sql('SELECT q.id, q.name
                                         FROM {quiz} q
                                         INNER JOIN {course_modules} cm ON q.id = cm.instance
                                         INNER JOIN {modules} m ON m.id = cm.module
                                         WHERE cm.course = ? AND m.name = ?', [$course->id, 'quiz']);

        if ($quizzes) {
            echo '<ul>';
            foreach ($quizzes as $quiz) {
                $attempt = $DB->get_record_sql('SELECT a.*
                                                FROM {quiz_attempts} a
                                                WHERE a.quiz = ? AND a.userid = ?', [$quiz->id, $USER->id]);

                if (!$attempt) {
                    echo '<li>Quiz: <a href="' . $CFG->wwwroot . '/mod/quiz/view.php?id=' . $quiz->id . '">' . $quiz->name . '</a> (not taken)</li>';
                }
            }
            echo '</ul>';
        }

        // Get assignments for the current course
        $assignments = $DB->get_records_sql('SELECT a.id, a.name
                                              FROM {assign} a
                                              INNER JOIN {course_modules} cm ON a.id = cm.instance
                                              INNER JOIN {modules} m ON m.id = cm.module
                                              WHERE cm.course = ? AND m.name = ?', [$course->id, 'assign']);

        if ($assignments) {
            echo '<ul>';
            foreach ($assignments as $assignment) {
                $submission = $DB->get_record_sql('SELECT s.*
                                                    FROM {assign_submission} s
                                                    WHERE s.assignment = ? AND s.userid = ?', [$assignment->id, $USER->id]);

                if (!$submission) {
                    echo '<li>Assignment: <a href="' . $CFG->wwwroot . '/mod/assign/view.php?id=' . $assignment->id . '">' . $assignment->name . '</a> (not submitted)</li>';
                }
            }
            echo '</ul>';
        }
    }
    echo '</ul>';
} else {
    echo '<p>You are not enrolled in any courses</p>';
}

echo '</body>';
echo '</html>';

echo $OUTPUT->footer();
php html moodle
1个回答
0
投票

作为起点,您需要删除您正在输出的所有文档类型、head 和 body 标签——所有这些都已在行中输出:

echo $OUTPUT->header().

如果你想要自定义样式,那么在你的插件中创建一个 styles.css 文件,然后清除你的站点缓存 - 你添加到该文件的任何样式都将包含在为你的整个站点服务的组合 CSS 文件中(只要你清除每当您更改 styles.css 文件时缓存或增加插件的版本号)。

有关在 Moodle 中使用 CSS 的更多详细信息,请参阅https://docs.moodle.org/dev/CSS_Coding_Style

© www.soinside.com 2019 - 2024. All rights reserved.