Как создать модуль на Moodle?

Как создать модуль на Moodle?

от Дмитрий Харламов -
Количество ответов: 8

Здравствуйте, вы не могли бы подсказать как можно создать или разработать модуль или плагин для Moodle? Может быть есть какие нибудь учебники или руководства

В ответ на Дмитрий Харламов

Re: Как создать модуль на Moodle?

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle

документация есть, но ее не много ( http://docs.moodle.org/dev/Developer_documentation ).

Учебников и руководств нет, но в документации есть что-то типа шаблона и есть куча примеров в самом moodle.

На руссом языке нет ничего. На мелкие конкретные вопросы  ответ можно получить и здесь.

Для начала требуется приличное знание php, знание sql (по мере сложности запросов) и знание html & js, для сложных/хитрых форм ввода придется осваивать ajax & yui, ну и место где можно поставить moodle (проще всего локально).

В ответ на Виталий Лавров

Re: Как создать модуль на Moodle?

от Дмитрий Харламов -

вы не могли бы дать пример исходного кода, с которым можно добавить новый блок? чтобы он был виден

В ответ на Дмитрий Харламов

Re: Как создать модуль на Moodle?

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle
В ответ на Виталий Лавров

Re: Как создать модуль на Moodle?

от Дмитрий Харламов -

в папке blocks  я создал папку simplehtml , в ней создал файл php  с названием - block_simplehtml

 

там внутри файла написал следующий код:

 

<?php
class block_simplehtml extends block_base
{
function init()
{
$this->title = get_string('simplehtml', 'block_simplehtml');
$this->version = 2004111200;
}
• • •
}
function get_content()
{
if ($this->content !== NULL) {
return $this->content;
}
 
$this->content = new stdClass;
$this->content->text = 'Здороваемся с Миром :)';
$this->content->footer = 'Завершающий вывод...';
 
return $this->content;
}
} // Конец класса
?>

но он по прежнему не отображается

В ответ на Дмитрий Харламов

Re: Как создать модуль на Moodle?

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle

Без чтения документации этот пепелац не взлетит улыбаюсь

уставка блока в moodle прошла без ошибок ?

В ответ на Виталий Лавров

Re: Как создать модуль на Moodle?

от Дмитрий Харламов -

так я как раз и скопировал и сделал все как в документации написано, только эффекта ноль, а там сказано что должно отображаться, но ничего не отображается

В ответ на Дмитрий Харламов

Re: Как создать модуль на Moodle?

от Vadim Tabunshchik -
Изображение пользователя Developers

но даже по вашему коду блок все равно не отображается (

Где не отображается блок?

  1. Проверяйте, присутствует ли блок в списке на странице "Администрирование ► Плагины ► Блоки ► Управление блоками"? Если - нет, то вы его не установили.
  2. Если в списке п. 1 блок есть, то проверяйте наличие блока в выпадающем меню "Добавить блок" в режиме редактирования

Рассказываю и показываю "на пальцах":

  1. Скачайте прикреплённый архив. Содержит минимум файлов, необходимых для создания нового блока.
  2. Распакуйте каталог simplehtml в moodle/blocks
  3. Зайдите на сайт в уведомления для установки блока. Должно быть такое окно:
    1
  4. Успешная установка, нажимаем "Продолжить":
    2
  5. Добавить блок на главной странице сайта/курса:
    3
  6. Вот и новый блок:
    3

На заметку: Если файл содержит кириллицу (как в вашем случае с block_simplehtml.php), обязательно сохранять в UTF-8, иначе получите кракозябры вместо текста.

В ответ на Дмитрий Харламов

Re: Как создать модуль на Moodle?

от Vadim Tabunshchik -
Изображение пользователя Developers

но он по прежнему не отображается

Включите отладку на сайте на "Разработчик" и, если файл block_simplehtml.php содержит в точности тот код, что в сообщении, получите fatal error РНР:

  1. Строка "} // Конец класса" вообще от фонаря, скобка класс не закрывает. Скобок - нечётное количество - 9 выпучил глаза???
  2. Все функции должны находиться внутри класса, а в приведенном коде класс закрывается скобкой после точек: • • •
    ЗЫ: многоточие, что, реально присутствует в коде файла? в смятении

Внимательней смотрите код в документации, изучите код существующих стандартных блоков. Вот этот фрагмент внимательно читали?

class block_simplehtml extends block_base {
public function init() {
$this->title = get_string('simplehtml', 'block_simplehtml');
}
// The PHP tag and the curly bracket for the class definition
// will only be closed after there is another function added in the next section.

Русским Английским языком же написано: "Тег PHP и фигурная скобка определения/описания класса могут быть закрыты только после ещё одной функции, добавленной в следующем разделе."

Т. е, если исправить ваш код, то будет так:

<?php
class block_simplehtml extends block_base {
    function init() {
        $this->title   = get_string('simplehtml', 'block_simplehtml');
        $this->version = 2004111200;
    }

    function get_content() {
        if ($this->content !== NULL) {
        return $this->content;
        }
 
    $this->content         =  new stdClass;
    $this->content->text   = 'Здороваемся с Миром улыбаюсь';
    $this->content->footer = 'Завершающий вывод...';
    
    return $this->content;
    }
}   // Конец класса

ЗЫ: В скриптах, содержащих только код PHP, закрывающий тег "?>" можно опустить. Подробнее…

ЗЫЫ: можно щаблон блока скачать и "мучать" его - NEWBLOCK template