Php 可以在Moodle上定制个人资料页面而不必触摸核心吗?
有没有办法在moodle中自定义配置文件页面而不编辑核心文件?是否可以覆盖页面并将编辑内容保留在主题文件中?类似于覆盖渲染器如何将所有编辑的渲染文件保留在主题文件夹中?这取决于您要更改的内容。如果是字段名,则可以通过管理界面覆盖语言字符串 如果要添加新的自定义字段,则可以通过admin>users完成 如果是隐藏字段,那么使用一些自定义CSS规则应该可以做到这一点Php 可以在Moodle上定制个人资料页面而不必触摸核心吗?,php,moodle,Php,Moodle,有没有办法在moodle中自定义配置文件页面而不编辑核心文件?是否可以覆盖页面并将编辑内容保留在主题文件中?类似于覆盖渲染器如何将所有编辑的渲染文件保留在主题文件夹中?这取决于您要更改的内容。如果是字段名,则可以通过管理界面覆盖语言字符串 如果要添加新的自定义字段,则可以通过admin>users完成 如果是隐藏字段,那么使用一些自定义CSS规则应该可以做到这一点 除此之外,您可能还需要做一些定制的核心更改(或者开始使用javascript,通过主题注入页面布局) 您可以使用$CFG->cust
除此之外,您可能还需要做一些定制的核心更改(或者开始使用javascript,通过主题注入页面布局) 您可以使用$CFG->customscripts设置来使用profile.php的副本: 创建自定义脚本文件夹
yourmoodlesite/customscripts
然后设置
$CFG->customscripts = 'yourmoodlesite/customscripts';
然后在customscripts中创建一个用户文件夹并复制profile.php,以便
yourmoodlesite/customscripts/user/profile.php
并删除或注释掉require…config.php行
现在,Moodle在查看概要文件时将使用/customscripts/user/profile.php
查看yourmoodlesite/config-dist.php了解更多详细信息我通过在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>';
}
对不起,我应该说得更具体些。我想在显示学生/用户信息时完全更改布局。我已经能够通过在我的主题中创建自定义布局和覆盖所有渲染器来完成这些复杂的布局检修,但是为了编辑概要文件页面,似乎我必须编辑user/profile.php。我可以编辑核心,但我必须担心将来moodle的更新。。。不知道从这里该做什么:)在升级过程中,通过谨慎使用git,特别是使用Tim Hunt的方法进行主要版本升级,可以维护核心修改。你是对的,它们并不理想,但在这种情况下,我知道没有其他选择。澄清一点:“yourmoodlesite”必须是指向所讨论的Moodle站点的绝对路径。例如“/home/myuser/public\u html”。还请注意,config.php文件指示CustomScript不应包括config.php。在config.php中可以使用的另一个技巧是:$CFG->CustomScript=dirname(\uu文件\uu)。”/自定义脚本'
这将确保customscripts的路径始终正确,因为它从config.php所在的基本路径开始。