Moodle网站管理自定义链接



我想添加自定义链接到站点管理文件夹,顶层,像这样:


网站管理-我的自定义链接1
-我的自定义链接2
.. 然后是标准moodle
——通知
——等等……

到目前为止,我能够添加自定义链接到一个主要导航块,并在管理块,但在站点管理文件夹没有办法。现在我从$settings = get_config('local_custom_links')的设置中获得菜单项;

如果你想在块管理中添加链接,它可以完美地工作。但是,如果有人成功地将链接添加到站点管理文件夹,请提供帮助。
下面是我的代码:

function local_custom_links_extend_settings_navigation(settings_navigation $nav, context $context) {
    $settings = get_config('local_custom_links');
    if (!empty($settings->menuitems_site_administration) && $settings->enable_site_administration) {
        $menu = new custom_menu($settings->menuitems_site_administration, current_language());
        if ($menu->has_children()) {
            foreach ($menu->get_children() as $item) {
                custom_links_settings_item($item, 0, null, $nav);
            }
        }
    }
}
function custom_links_settings_item(custom_menu_item $menunode, $parent, $pmasternode, settings_navigation $nav) {
    global $PAGE, $CFG;
    static $submenucount = 0;
    if ($menunode->has_children()) {
        $submenucount++;
        $url = $CFG->wwwroot;
        if ($menunode->get_url() !== null) {
            $url = new moodle_url($menunode->get_url());
        } else {
            $url = null;
        }
        if ($parent > 0) {
            $masternode = $pmasternode->add($menunode->get_text(), $url, navigation_node::TYPE_CONTAINER);
        } else {
            $masternode = $nav->add($menunode->get_text(), $url, navigation_node::TYPE_CONTAINER);
        }
        foreach ($menunode->get_children() as $menunode) {
            lambda_custom_links_custom_menu_item($menunode, $submenucount, $masternode, $nav);
        }
    }
}

在您的/local/custom_links文件夹中创建一个settings.php文件

defined('MOODLE_INTERNAL') || die;
if ($hassiteconfig) {
    $ADMIN->add(
            'root', // Root is the top menu.
            new admin_externalpage(
                'local_custom_links', // Unique name.
                get_string('pluginmenu', 'local_custom_links'), // Human name.
                new moodle_url('/local/custom_links/index.php'), // Link.
               'local/custom_links:manage' // Capability if any.
           )
    );
}

我成功地添加了一个带有几个自定义链接的文件夹,现在我需要弄清楚如何将它放在站点管理的顶部:

$ADMIN->add('root', new admin_category('local_custom_links', 'Platform'));
$ADMIN->add('local_custom_links', new admin_settingpage('local_custom_link_1', 'navigation 1',
            $CFG->wwwroot.'/local/settings/navigation.php'));
$ADMIN->add('local_custom_links', new admin_externalpage('local_custom_link_2', 'navigation 2',
            $CFG->wwwroot.'/local/settings/navigation.php'));
$ADMIN->add('local_custom_links', new admin_externalpage('local_custom_link_3', 'navigation 3',
            $CFG->wwwroot.'/local/settings/navigation.php'));
$ADMIN->add('local_custom_links', new admin_externalpage('local_custom_link_4', 'navigation 4',
            $CFG->wwwroot.'/local/settings/navigation.php'));
$ADMIN->add('local_custom_links', new admin_externalpage('local_custom_link_5', 'navigation 5',
            $CFG->wwwroot.'/local/settings/navigation.php'));