Переопределение функции forum_print_latest_discussions

Переопределение функции forum_print_latest_discussions

от Виктор Крючков -
Количество ответов: 3

Добрый день.

Стоит задача изменить вывод новостей на главной странице сайта в моей теме. Через админку настроил вывод на главной блока новостей. В коде нашел, что этот блок выводиться в фале index.php функцией forum_print_latest_discussions. Чтоб не ковырять ядро, хотелось бы переопределить ее в своей теме и использовать. Второй день читаю маны по renderer override, но что-то мне подсказывает, что это не спасет. Через файл renderer.php переопределил класс mod_forum_renderer, но через него не получается сделать. Эта функция лежит просто не в классе и я даже не представляю, как это сделать. 

Или вообще поступить по другом, написать кастомный блок с новостями и своей функцией вывода?

Заранее спасибо.

В ответ на Виктор Крючков

Re: Переопределение функции forum_print_latest_discussions

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

Если исправления мелкие, то просто подправить имеющийся код, в надеже, что этот код не будут править в официальной ветке.

Если вы хотите совсем иначе организовать вывод данных, то есть смысл написать свое.

А готовые варианты не пробовали искать ? Может оно уже есть...

В ответ на Виктор Крючков

Re: Переопределение функции forum_print_latest_discussions

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Блок, конечно, идеальный вариант. Но блоки отображаются только справа и слева. Для того, что посередине страницы - только набор стандартных вариантов, которые жестко закодены. Предлагал когда-то сделать это всё модульным на трекере, но что-то программисты ядра пока на это не отозвались.

Функция  forum_print_latest_discussions, к несчастью, не вызывает ничего, чему можно было бы делать override. Поэтому самый просто вариант - дописать изменения в код moodle/index.php под строкой 

case FRONTPAGENEWS:

При этом лучше код сделать отдельным файлом, который  вставить директивой include, после неё break;. Тогда ваши изменения будут составлять 2 строки и легко перенесутся с версии на версию.

В ответ на Vadim Dvorovenko

Re: Переопределение функции forum_print_latest_discussions

от Виктор Крючков -

Спасибо за ответы. Думаю отдельным файлом и сделаю. 

Вообще если честно, внутренняя структура Мудла полный капец.