6

Liferay CMS 带有 Alloy UI 来执行几个 javascript 功能(可拖动、可排序等)。问题是我们还使用了几个使用 jQuery UI 的 jQuery 插件。Alloy UI 加载速度也很慢,并且开销很大,导致网页大量滞后,所以我们想删除它并使用 jQuery UI 来做事。

Liferay 默认在 DOM 中加载 Alloy UI 文件,我们需要在服务器/portlet 文件中删除任何内容(声明等)吗?

4

2 回答 2

4

简短的回答是我不会费心去尝试!这是因为 Alloy UI 是 Liferay UI 不可或缺的一部分,如果没有它,您将需要做很多工作来用 jQuery 替换。

Alloy UI 不仅仅是可拖动的 portlet 和排序。它还控制弹出窗口、AJAX 调用以及我还没有遇到的许多其他内容。

但是,如果您真的想通过它,那么我建议您首先创建一个自定义主题并从主题中删除对 Alloy UI 的任何引用,然后加载 jQuery。

然后,您还需要创建一个或多个钩子(并且可能使用 EXT 插件)来替换所有引用 Alloy UI 的 JSP 文件,并使用使用 jQuery 来执行相同功能的副本。

或者另一种方法是获取 GitHub 上的 Liferay 源代码,并从源代码中创建您自己的版本,删除 Alloy UI。

我仍然强烈建议您不要浪费时间。爱它或恨它,Alloy UI 被烘烤干燥成 Liferay。如果您遵循我的任何建议,您将有效地阻止自己在未来升级 Liferay。

更好的建议是向 Liferay 提出改进 Alloy UI 的方法,或者为GitHub 上的 Alloy UI 存储库做出贡献并帮助社区。

~~编辑~~

要仅为未经身份验证的用户禁用 Alloy UI,那么修改 portal-web\docroot\html\common\themes\ 中的文件的 HOOK 可能会起到作用。特别是看top_js.jspf。如果您在那里检查并说只有在您登录后才加载 Alloy UI,那么它可能是您之后的答案。

于 2012-12-06T08:39:01.493 回答
0

It should be done by using the barebone/everything.js configuration, see: http://www.liferay.com/documentation/liferay-portal/6.1/user-guide/-/ai/javascri-3

The default logic is coded in com.liferay.portal.events.ServicePreAction in such a way that unauthenticated users get the list of barebone JavaScript files whereas authenticated users get both the list of barebone JavaScript files and the list of everything JavaScript files.

i think, that's what you want to do. No hook or something else needed.

于 2013-02-12T12:28:36.727 回答