如何在 Silverstripe 中使用自己版本的 jQuery

发布于 2024-12-08 08:32:43 字数 683 浏览 0 评论 0原文

我们正在使用 Silverstripe 开发一些 Web 应用程序,并希望使用最新版本的 jQuery。

Silverstripe 运行的框架 Sapphire 需要使用以下代码的(旧)版本的 jQuery:

Requirements(SAPPHIRE_DIR .'/thirdparty/jquery/jquery.js'); 

这包括在所有生成的网页上指向此文件的链接。我们可以在 Page_Controller 类的框架之外使用以下代码来阻止此要求:

Requirements::block(SAPPHIRE_DIR .'/thirdparty/jquery/jquery.js'); 

这会从所有生成的网页中删除包含内容,但也会从 Silverstripe CMS 中删除包含内容 - 导致其崩溃。

(几乎)简单的修复方法是将我们的 jQuery 版本复制到 /sapphire/thirdparty/jquery/jquery.js - 但我们试图保持 Sapphire 框架不受影响且干净,以便将来升级。

这也会产生问题,因为使用本机 Silverstripe 要求意味着 jQuery 几乎最后在页面上加载 - 破坏了我们的一些功能。

是否有办法阻止在网站上加载 Silverstripe 的 jQuery,但允许在 CMS 中加载?

We are developing some web applications using Silverstripe and want to use a recent version of jQuery.

Sapphire, the framework that Silverstripe runs on requires their (older) version of jQuery using the following code:

Requirements(SAPPHIRE_DIR .'/thirdparty/jquery/jquery.js'); 

This includes a link to this file on all generated web pages. We can block this requirement using the following code outside of the framework in the Page_Controller class:

Requirements::block(SAPPHIRE_DIR .'/thirdparty/jquery/jquery.js'); 

This removes the include from all generated web pages but it also removes the include from the Silverstripe CMS - causing it to break.

The (almost) simple fix for this is for us to copy our version of jQuery into /sapphire/thirdparty/jquery/jquery.js - but we are trying to keep the Sapphire framework untouched and clean for future upgrades.

This also creates problems as using the native Silverstripe requirements means that jQuery almost loads last on the page - breaking some of our functionality.

Is there anyway to block the loading of Silverstripe's jQuery on the websites but allow it in the CMS?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦境 2024-12-15 08:32:43

SilverStripe 在您的页面中包含 jQuery,因为您的 .ss 文件中有 $SilverStripeNavigator,或者您正在使用的模块需要它。此外,将 Requirements::block(); 添加到 Page_Controller 不应影响 CMS。

SilverStripe is including jQuery in your pages because you either have $SilverStripeNavigator in your .ss file or a module you are using is requiring it. Additionally, adding Requirements::block(); to the Page_Controller should not effect the CMS.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文