#php #moodle
#php #moodle
Вопрос:
Есть ли способ настроить страницу профиля в moodle без редактирования файлов ядра? Можно ли переопределить страницу и сохранить изменения в файлах темы? аналогично тому, как переопределение средства визуализации сохраняет все отредактированные файлы рендеринга внутри папки темы?
Ответ №1:
Вы могли бы использовать параметр $CFG-> customscripts для использования копии profile.php :
создайте папку customscripts
yourmoodlesite/customscripts
Затем установите
$CFG->customscripts = 'yourmoodlesite/customscripts';
Затем создайте пользовательскую папку в пользовательских скриптах и скопируйте profile.php итак, у вас есть
yourmoodlesite/customscripts/user/profile.php
и удалите или закомментируйте require…config.php линия.
Теперь Moodle будет использовать /customscripts/user/profile.php при просмотре профиля.
Посмотрите yourmoodlesite/config-dist.php для получения более подробной информации
Комментарии:
1. Пояснение: «yourmoodlesite» должен быть абсолютным путем к рассматриваемому сайту Moodle. Например, «/home/myuser/public_html».
2. Также обратите внимание, что config.php file указывает, что пользовательские скрипты не должны включать config.php .
3. Еще один трюк, который вы можете использовать в config.php заключается в следующем:
$CFG->customscripts = dirname(__FILE__) . '/customscripts';
Это гарантирует, что ваш путь к customscripts всегда правильный, поскольку он начинается с базового пути, где config.php находится в расположении.
Ответ №2:
Это зависит от того, что вы хотите изменить. Если это имена полей, то вы можете переопределить языковые строки через интерфейс администратора.
Если это добавление новых пользовательских полей, то это можно сделать через admin> users .
Если он скрывает поля, то это должно быть возможно с помощью некоторых пользовательских правил CSS.
Кроме этого, вам, вероятно, нужно внести некоторые пользовательские изменения в ядро (или начать возиться с макетом страницы с помощью javascript, введенного через тему).
Комментарии:
1. Извините, я должен был быть более конкретным. Я хочу полностью изменить макет, отображая информацию об ученике / пользователе. Я смог выполнить эти сложные изменения макета, создав пользовательские макеты и переопределив все средства визуализации в моей теме, но для редактирования страницы профиля, похоже, мне нужно отредактировать user/profile.php . Я мог бы отредактировать ядро, но мне пришлось бы беспокоиться об обновлениях moodle в будущем… не уверен, что делать дальше 🙂
2. Можно поддерживать изменения ядра во время обновления, тщательно используя git, в частности, используя метод Тима Ханта для обновления основных версий tjhunt.blogspot.co.uk/2014/01/… . Вы правы, что они не идеальны, но в этом случае альтернативы, о которой я знаю, нет.
Ответ №3:
Я смог добиться того, что пытался сделать, создав пользовательский макет в моей теме для mypublic.php , затем внутри этой темы я включил еще один php-файл, который отображал все атрибуты, которые я хотел, через глобальные переменные:
<?php
echo '<div id="profilename" class="col-sm-6">';
function get_content () {
global $USER, $CFG, $SESSION, $COURSE;
$wwwroot = '';
$signup = '';}
if (empty($CFG->loginhttps)) {
$wwwroot = $CFG->wwwroot;
} else {
$wwwroot = str_replace("http://", "https://", $CFG->wwwroot);
}
if (!isloggedin() or isguestuser()) {
echo '<a href="'.$CFG->wwwroot.'/login/index.php">'.get_string('loggedinnot').'</a>';
echo '</div>';
echo '</div>';
} else {
echo '<ul id="custom_profileinfo">';
echo '<li><span>'.get_string('username').': </span>'.'<a href="'.$CFG->wwwroot.'/user/view.php?id='.$USER->id.'amp;amp;course='.$COURSE->id.'">'.$USER->username.'</a></li>';
echo '<li><span>'.get_string('firstname').': </span>'.'<a href="'.$CFG->wwwroot.'/user/view.php?id='.$USER->id.'amp;amp;course='.$COURSE->id.'">'.$USER->firstname.'</a></li>';
echo '<li><span>'.get_string('lastname').': </span>'.'<a href="'.$CFG->wwwroot.'/user/view.php?id='.$USER->id.'amp;amp;course='.$COURSE->id.'">'.$USER->lastname.'</a></li>';
echo '<li><span>'.get_string('email').': </span>'.'<a href="'.$CFG->wwwroot.'/user/view.php?id='.$USER->id.'amp;amp;course='.$COURSE->id.'">'.$USER->email.'</a></li>';
echo '<li><a class="edit_profile" href="'.$CFG->wwwroot.'/user/edit.php?id='.$USER->id.'amp;amp;course='.$COURSE->id.'">'.get_string('updatemyprofile').'</a></li>';
echo '</ul>';
echo '</div>';
echo '</div>';
}