expressionEngine safecracker加载不需要的小部件

时间:2011-06-25 02:10:26

标签: php expressionengine safecracker

我有一个空模板,只有一个安全表单,包含2个自定义字段。当我尝试在浏览器中加载它时,加载大约需要2-3秒。看着萤火虫,我看到以下GET

http://localhost/ee1/?ACT=7&ui=core,widget,mouse,position,draggable,resizable,button,dialog,datepicker&plugin=scrollable,scrollable.navigator,ee_filebrowser,ee_fileuploader,markitup,thickbox,toolbox.expose,overlay,tmpl&v=1308711156&use_live_url=y&include_jquery=y

我不需要加载上面网址中显示的大部分内容。我如何控制装有safecracker表单的内容。我将直接从谷歌加载jQuery / UI,所以我不需要safecracker加载它。我可以通过执行datepicker="no" include_jquery="no"从safecracker表单中删除jQuery和datepicker,但是如何删除url中提到的其他内容,如可滚动,可拖动,厚盒和其他东西。

enter image description here

2 个答案:

答案 0 :(得分:2)

简答:

可悲的是,没有办法禁用许多包含的SafeCracker JavaScripts。

长答案:

SafeCracker旨在尽可能达到通用目的,以满足最大受众的需求。

通过这种权衡,SafeCracker捆绑了jQuery,jQuery UI Widgets,jQuery Tools和各种其他jQuery插件和函数,以方便客户端表单验证和自定义字段类型的呈现。

正如您所示,您可以disable jQuery from automatically being output by SafeCracker - 例如,如果您想使用EE控制面板中提供的更新版本 - 并且您可以禁用DatePicker,但据我所知如果不破解核心的SafeCracker库,就无法阻止其他JavaScripts的输出。

可以理解的是,我不是这个“包括所有内容和厨房接收器方法”的忠实粉丝,并且讨厌在页面中添加无关且臃肿的脚本 - 尤其是那些我从未首先使用过的脚本。

然而,显然是一个设计决策,SafeCracker的构建包括它输出的所有JavaScripts,因为没有经过批准的方法来删除它们。所以我们基本上不会因为无法预料的未来与他们打交道。

如果您对此表示强烈反对,我建议您提交一个Feature Request to EllisLab,以便更安全地配置SafeCracker输出更多JavaScripts的草率方式。


对于好奇的人,请在以下文件中围绕第887行取一个高峰来查看SafeCracker标记对中捆绑了多少个jQuery UI Widgets。

/system/expressionengine/modules/safecracker/libraries/safecracker_lib.php


注意:如果您想自己解决问题,可以注释掉$js_defaults$ui数组中的一些项目,这些项目将删除JavaScripts的输出。但是,在这样做时,您将承担SafeCracker操作的所有责任和风险。

答案 1 :(得分:0)

我认为自rjb回答以来这已经发生了变化,但SafeCracker提供了两个我发现有助于大幅减少页面加载时间的参数:

include_jquery="no" safecracker_head="no"

Relevant documentation