【问题标题】:Moodle change badges image sizeMoodle 更改徽章图像大小
【发布时间】:2020-04-23 18:11:34
【问题描述】:

当我在 Moodle 3.5 中创建徽章时,核心会自动为徽章图标创建 3 个拇指(35x35、100x100、512x512)。我应该增加 100x100 拇指的大小,但该大小在核心包中是硬编码的:/lib/gdlib.php,函数 process_new_icon() 行 184,214,228。

在不破解核心文件的情况下实现我的目的的更好方法是什么?也许本地插件能够覆盖核心的功能?

谢谢

【问题讨论】:

  • 如果您不显示任何代码或尝试自己解决问题,将很难提供任何帮助。
  • 我仍然没有尝试:我只是调查了代码,发现我需要更改的参数被硬编码在核心函数中。我没有在文档中找到覆盖核心功能的解决方案,所以我想知道是否有最佳实践或者其他人是否有同样的问题。如果您认为有用,我可以在答案中复制/粘贴核心功能
  • 核心中的函数是否调用插件可以使用的任何钩子/动作?
  • 据我所知没有...但是由于我是新手,因此这里是源文件:github.com/moodle/moodle/blob/master/lib/gdlib.php 该函数位于第 104 行(感谢您的耐心...)。基本上我只需要将“100”切换为“xxx”

标签: php moodle moodle-api


【解决方案1】:
  1. 创建一个插件。编写相同的函数(使用带有您自己的类的类文件夹,它是自动加载的),但宽度可变。

  2. 找到创建徽章的脚本。使用customscripts 功能将脚本替换为您自己的脚本,该脚本使用您新创建的函数。

【讨论】:

  • 很奇怪,我无法让自动加载器工作。我在 /local/badgesize/classes/badgesize.php 中放置了一个名为“local_badgesize”的简单类,但在清除缓存后,class_exists('local_badgesize') 仍然返回 false。该插件在管理员中正确显示,我是否遗漏了一些明显的东西?
  • 感谢 Evgeniy,您的解决方案完美运行。现在我将深入了解为什么自动加载不起作用(我暂时使用 require_once)。可能我什至会在管理员的某处添加一些自定义设置,以便可以在后端设置大小,而不是在某些 .php 脚本中进行硬编码。如果您也有耐心帮助我自动加载...再次感谢 :) 顺便说一句,答案已接受!
  • 自动加载对类文件夹中的任何类自动起作用。如果它不适合您,请尝试使用 namespace local_yourpluginname; 并将类命名为与文件名称完全相同,例如/classes/badgesize.php 和类名 badgesize 与命名空间 local_badgesize
  • namespacing 类正确修复了它:我只是在写“使用 local_badgesize”而不是“使用 local_badgesize\badgesize;”。现在一切都好,谢谢!
【解决方案2】:

这是一个古老的讨论,但我找到了解决我认为类似问题的方法。我有针对儿童的在线课程,徽章是一个不错的游戏化工具。但我不喜欢徽章概览表中显示的小图片或不好看的个人徽章视图 - 特别是对于孩子们。 在 John Bolton 的出色帮助下,我分两步实现了改变:

  1. 修改为主题添加自定义 CSS 以强制使用更大的图像
  2. 在 badgeslib.php 文件中做一个小改动,强制 Moodle 使用概览表中较大的缩略图。

这是我们在 Moodle 论坛中讨论的链接: https://moodle.org/mod/forum/discuss.php?d=401347

【讨论】:

    猜你喜欢
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    相关资源
    最近更新 更多