Dev /

Филтри

Тази страница обяснява как да направите нов филтър.
Ако се интересувате как да използвате наличните в Moodle филтри, отидете на страница Филтри в документацията за потребители.

Преди да започнете

За да виждате веднага промените, които вашият нов филтър прави, трябва да намалите времето за кеширане, на генерираните от филтри текстове до 0. Това се извършва от администратор, блок "Настройки"

"Администриране на сайта" > "Добавки (Plugins)" > "Филтри" > "Обикновени настройки на филтрите"

настройка "Период на достъпност на кешираните текстове".

Създаване на филтъра

Разглеждаме пример за филтър, който заменя всяко срещане на думата "world" с думите "hello world". Нека името на новия филтър е "helloworld".

В директория filters на Moodle създайте нова директория, носеща името на новия филтър helloworld.

В новата директория създайте файл filter.php, съдържащ следната дефиниция на клас filter_helloworld:

<?php
class filter_helloworld extends moodle_text_filter {

    public function filter($text, array $options = array()) {
        return str_replace('world', 'hello world!', $text);
    }

}

Както се вижда, този клас дефинира функцията filter с два параметъра $texst - текстът, в който филтъра ще търси определени фрагменти и ще ги заменя с html код и $options - масив от опции.

Задаване име на новия филтър

В директорията на филтъра helloworld създайте поддиректория lang, а в нея поддиректория en и в директория lang/en създайте файл с име: filter_helloworld.php.

Само създаването на този празен файл е достатъчно за да получи новият филтър име helloworld, но за да може името на филтъра да се превежда на различни езици във файл filter_helloworld.php трябва да се дефинира:

<?php
$string['filtername'] = 'Hello world';

Изобщо, този файл дефинира различни надписи, необходими за работата на филтъра, които могат да се показват на езика на потребителя, ако бъдат преведени в съответните езикови пакети.

Активиране на филтъра

Вижте: Управление на филтрите на сайта

Добавяне на настройка

Да създадем настройка, която определя пред каква дума да се добавя поздрава "hello". В директорията на филтъра се създава файл filtersettings.php (във версия на Moodle >= 2.6 settings.php) със следното съдържание:

<?php
$settings->add(new admin_setting_configtext('filter_helloworld_word',

        get_string('word', 'filter_helloworld'),
        get_string('word_desc', 'filter_helloworld'), 'world', PARAM_NOTAGS));

Класът admin_setting_configtext е дефиниран във файл lib/adminlib.php.

За да се покажат необходимите надписи на страницата за настройки на филтъра, във файл lang/en/filter_helloworld.php добавяме оше две дефиниции:

$string['word'] = 'The thing to greet';
$string['word_desc'] = 'The hello world filter will add the word \'hello\' in front of every occurrence of this word in any content.';

Кодът на филтъра във файл filter.php променяме, така, че той да добавя поздрава "hello" пред зададената в настройката дума.

class filter_helloworld extends moodle_text_filter {
public function filter($text, array $options = array()) {

        global $CFG;
        return str_replace($CFG->filter_helloworld_word,
                "hello $CFG->filter_helloworld_word!", $text);
    }

}