有没有办法在moodle中自定义配置文件页面而无需编辑核心文件?是否可以覆盖页面并保持主题文件中的编辑?类似于覆盖渲染器如何将所有已编辑的渲染文件保留在主题文件夹中?
答案 0 :(得分:5)
您可以使用$ CFG->海关文本设置来使用profile.php的副本:
创建海关文件夹
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 :(得分:3)
这取决于你想要改变什么。如果是字段名称,则可以通过管理界面覆盖语言字符串。
如果要添加新的自定义字段,则可以通过管理员>完成。用户。
如果它是隐藏字段,那么应该可以使用一些自定义CSS规则。
除此之外,您可能需要进行一些自定义核心更改(或者开始使用javascript来解决页面布局,通过主题注入)。
答案 2 :(得分:0)
我能够通过在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.'&course='.$COURSE->id.'">'.$USER->username.'</a></li>';
echo '<li><span>'.get_string('firstname').': </span>'.'<a href="'.$CFG->wwwroot.'/user/view.php?id='.$USER->id.'&course='.$COURSE->id.'">'.$USER->firstname.'</a></li>';
echo '<li><span>'.get_string('lastname').': </span>'.'<a href="'.$CFG->wwwroot.'/user/view.php?id='.$USER->id.'&course='.$COURSE->id.'">'.$USER->lastname.'</a></li>';
echo '<li><span>'.get_string('email').': </span>'.'<a href="'.$CFG->wwwroot.'/user/view.php?id='.$USER->id.'&course='.$COURSE->id.'">'.$USER->email.'</a></li>';
echo '<li><a class="edit_profile" href="'.$CFG->wwwroot.'/user/edit.php?id='.$USER->id.'&course='.$COURSE->id.'">'.get_string('updatemyprofile').'</a></li>';
echo '</ul>';
echo '</div>';
echo '</div>';
}