如何通过模块将 javascript 添加到 silverstripe cms 中的所有页面?

How to add javascript to all pages in silverstripe cms via a module?

我正在尝试为 silverstripe 创建一个模块。我正在通过 https://docs.silverstripe.org/en/4/developer_guides/templates/requirements/#requirements 了解如何将 javascript 和 css 文件添加到前端页面。

我无法弄清楚的是如何在用户安装我的模块时将 javascript 文件添加到所有 cms 页面。我可以在那里扩展和指定 class 吗?还是可以通过某种方式使用配置来完成?

创建一个 class 子class 是 SilverStripe\Core\Extension,然后使用 config YML file

将其应用于 \PageController

然后您的 Extension class 可以实施 onAfterInit() 以使用 Requirements API

我们可以通过将以下内容添加到 .yml 文件来完成此操作:

SilverStripe\Admin\LeftAndMain:
  extra_requirements_javascript:
    - your-namespace/your-module-name:javascript/file.js

3dgoo 和 alt 的答案都是正确的,具体取决于您的用例。

如果您想将 Javascript 添加到所有前置“页面”(访问者在访问您的网站时看到的内容 *在大多数情况下),那么你会想要关注 .

否则,如果您想将 Javascript 添加到您网站的 /admin 部分, 这样 CMS 管理员就会受到您的脚本的影响,那么您将需要关注 .