Размер изображения значков Moodle

когда я создаю значок в Moodle 3.5, ядро ​​автоматически создает 3 больших пальца для значка значка (35x35, 100x100, 512x512). Я должен увеличить размер большого пальца 100x100, но этот размер жестко запрограммирован в основном пакете: /lib/gdlib.php, function process_new_icon (), строки 184 214 228.

Как лучше всего достичь моей цели, не взламывая файлы ядра? Может быть, локальный плагин сможет переопределить функцию ядра?

Спасибо

Будет очень сложно оказать какую-либо помощь, если вы не покажете код или не попытаетесь решить проблему самостоятельно.

AmmoPT 03.09.2018 16:13

Я все еще ничего не пробовал: я просто исследовал код и обнаружил, что параметр, который мне нужно изменить, жестко запрограммирован в основной функции. Я не нашел в документации решения для переопределения основной функции, поэтому мне было интересно, есть ли лучшая практика или у кого-то была такая же проблема. Если вы считаете это полезным, я могу скопировать / вставить основную функцию в ответ.

btb84 03.09.2018 16:17

Вызывает ли функция в ядре какие-либо ловушки / действия, которые может использовать плагин?

AmmoPT 03.09.2018 16:21

Нет, насколько я понимаю ... но поскольку я новичок, вот исходный файл: github.com/moodle/moodle/blob/master/lib/gdlib.php, функция находится в строке 104 (спасибо за терпение ...). По сути, мне просто нужно было переключить «100» на «xxx».

btb84 03.09.2018 16:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
308
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
  1. Создайте плагин. Напишите ту же функцию (используйте папку классов с вашим собственным классом, он загружается автоматически), но с переменной шириной.

  2. Найдите скрипт, создающий значки. Используйте функцию customscripts, чтобы заменить скрипт вашим собственным, который использует вашу недавно созданную функцию.

Странно, не могу заставить работать автозагрузчик. Я поместил простой класс с именем local_badgesize в /local/badgesize/classes/badgesize.php, но class_exists ('local_badgesize') по-прежнему возвращает false после очистки кеша. Плагин правильно отображается в админке, я упустил что-то очевидное?

btb84 05.09.2018 21:43

Спасибо, Евгений, ваше решение работает отлично. Сейчас покопаюсь, чтобы понять, почему не работает автозагрузка (временно использую require_once). Возможно, я даже добавлю некоторые пользовательские настройки где-нибудь в админке, чтобы размеры можно было устанавливать на стороне сервера, а не жестко задавать в некоторых сценариях .php. Если у вас хватит терпения помочь мне и с автозагрузкой ... еще раз спасибо :) Кстати, ответ принят!

btb84 06.09.2018 11:39

Автозагрузка работает автоматически для любого класса внутри папки классов. Если это не сработает для вас, попробуйте использовать namespace local_yourpluginname; и назовите класс точно так же, как назван файл, например /classes/badgesize.php и имя класса badgesize с пространством имен local_badgesize

Evgeniy Voevodin 06.09.2018 16:14

класс namespacing правильно исправил это: я просто писал «использовать local_badgesize» вместо «использовать local_badgesize \ badgesize;». Теперь все в порядке, спасибо!

btb84 06.09.2018 17:01

Это старое обсуждение, но я нашел решение, на мой взгляд, похожей проблемы. У меня есть онлайн-курсы для детей, и значки - хороший инструмент для геймификации. Но мне не понравились маленькие картинки, показанные в обзорной таблице значков, или отдельный вид значков, который не очень хорош - особенно для детей. С фантастической помощью Джона Болтона я добился изменения в два этапа:

  1. Измените добавление настраиваемого CSS в тему, чтобы изображения были больше
  2. Внесите небольшое изменение в файл badgeslib.php, чтобы Moodle использовал эскиз большего размера в обзорной таблице.

Это ссылка на наше обсуждение на форуме Moodle: https://moodle.org/mod/forum/discuss.php?d=401347

Другие вопросы по теме