Пользовательские ссылки администрации сайта 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);
}
}
}

1

Решение

Создать settings.php файл в вашем /local/custom_links папка с этим

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.
)
);
}
0

Другие решения

Я успешно добавил папку с несколькими пользовательскими ссылками, теперь мне нужно выяснить, как поместить ее в верхнюю часть Администрации сайта:

$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'));
0