2016-04-07 1 views
0

Я использую Moodle 2.7 и следующее пользовательское поле для курсов в таблице базы данных mdl_course_info_field:Добавить ссылку на курс страницы в зависимости от курса настраиваемого поля

Полное название: Школа курса

Шрот название: школа

Тип: Меню выбора

Выбор:

  • Highschool курс

  • Prepschool курс

Целью было показать ссылку на любой курс страницы, где под настройках chechbox для Highschool курс используется. В файле mymoodle/local/link/functions.js есть ссылка:

if($('#page-course-view-topcollmytheme .orangebar p')) { 
    $('#page-course-view-topcollmytheme #section-0 .content > .summary').append('<button class="highschoollink">Hig school course</button>'); 
} 

Как проверить, если флажок выбран в затем, чтобы показать ссылку на странице курса?

+0

Где вы хотите, чтобы отобразить поле? В заголовке курса? –

ответ

1

Вы можете использовать средства визуализации для отображения заголовка курса:

https://tracker.moodle.org/browse/MDL-36048

Таким образом, вы могли бы включить ссылку школы в заголовке курса - вот пример:

В /course/format/formatname/lib.php

Добавить эту функцию в class format_formatname

/** 
* Display's a header at the top of the sections. 
* 
* @return renderable class 
*/ 
public function course_content_header() { 
    global $DB, $PAGE, $USER; 

    if (!isset($PAGE)) { 
     return null; 
    } 

    // Only display if we are on the course-view page. 
    if (strpos($PAGE->pagetype, 'course-view-') !== 0) { 
     return null; 
    } 

    $sql = "SELECT d.data 
      FROM {course_info_field} f 
      JOIN {course_info_data} d ON d.fieldid = f.id AND d.courseid = :courseid 
      WHERE f.shortname = :shortname"; 
    $params = array('courseid' => $this->courseid, 'shortname' => 'school'); 
    $schoolname = $DB->get_field_sql($sql, $params); 
    $schoolurl = ''; 
    // You should store the school url in the database somewhere. 
    // Using switch code for this example. 
    switch ($schoolname) { 
     case 'high school' : 
      $schoolurl = new moodle_url('http://www.schoolsite.com'); 
      break; 
     ... 
    } 

    return new format_formatname_coursecontentheader($schoolname, $schoolurl); 
} 

добавить Также этот класс /course/format/formatname/lib.php

class format_formatname_coursecontentheader implements renderable { 
    /** 
    * School name 
    * 
    * @var string $schoolname 
    */ 
    public $schoolname; 

    /** 
    * School url 
    * 
    * @var string $schoolurl 
    */ 
    public $schoolurl; 

    /** 
    * Class storing information to be passed and displayed in the course content header 
    * 
    * @param string $schoolname 
    * @param moodle_url $schoolurl 
    */ 
    public function __construct($schoolname, $schoolurl) { 
     $this->schoolname = $schoolname; 
     $this->schoolurl = $fields->schoolurl; 
    } 
} 

Тогда в /course/format/formatname/renderer.php

Добавьте эту функцию в class format_formatname_renderer

/** 
* Renders course header 
* 
* @param renderable $courseheader 
* @return string 
*/ 
public function render_format_formatname_coursecontentheader($courseheader) { 
    $output = ''; 

    $schoolname = $courseheader->schoolname; 
    $schoolurl = $courseheader->schoolurl; 

    $link = html_writer::link($schoolurl, $schoolname); 

    $output .= html_writer::div($link, 'format-formatname-schoollink'); 

    return $output; 
} 
+0

Удивительно! Это сработало! – StartVader

0

Предлагаю вам добавить ссылку на курс в качестве ресурса URL.

Затем убедитесь, что для сайта разрешены «условные действия».

Наконец, отредактируйте активность URL, чтобы ограничить доступ к пользователям, у которых есть правильное поле профиля пользователя.

Для получения более подробной информации см. https://docs.moodle.org/27/en/Conditional_activities_settings.

+0

Привет, спасибо за предложение, но это не активность URL-адресов, а в коде в functions.js. Мои вопросы заключались в том, как получить пользовательское поле «курс средней школы» и в зависимости от него показать ссылку? Это не пользовательское поле, но пользовательское поле курса и «школа» с param1 «Highschool course». – StartVader