在新的Drupal安装中安装了CiviCRM,定制了CiviCRM并添加了数据。实际的Drupal站点是在单独的安装中单独构建的。现在它已经完成,我将CiviCRM与新的Drupal Site(文件和数据库)合并。除了登录CiviCRM之外,一切似乎都有效:http://example.com/civicrm/dashboard它说:
“必须在浏览器中启用Javascript才能使用信息中心功能。”
是的,Javascript已启用。 CiviCRM菜单全部坏了等等。 Chrome还会报告以下错误:
未捕获TypeError:对象#没有方法'菜单' jquery.textarearesizer.js:5Uncaught TypeError:Object#没有方法'TextAreaResizer' main.js:6 Uncaught TypeError:Object#没有方法'cycle' jquery.textarearesizer.js:5Uncaught TypeError:Object#没有方法'TextAreaResizer'
未启用性能下的Javascript压缩。有什么想法吗?
答案 0 :(得分:2)
CiviCRM使用jQuery对象作为cj而不是$,以避免与Drupal JQuery库发生冲突。从理论上讲,它们可以使用不同的版本,因为它们的命名空间不同(jQuery支持正式使用noConflict())。
您可能遇到的冲突可能来自您的修改,导致Drupal或CiviCRM在引导程序的不同位置加载其jQuery库,或者尝试多次加载jQuery。这将使得将$转换为cj的操作在已经实例化之后拾取Drupal jQuery对象,而不是之前,将Drupal和/或CiviCRM留下而不需要将它附加到$对象的库(你使用#代替$?)。
搜索所讨论页面上所有使用noConflict()的代码及其JavaScript包含的代码。你应该只在一个地方找到它。与demo.civicrm.org页面比较看看差异,你可能会在那里找到一个额外的。修复它的最佳希望是在Drupal系统表中调整自定义模块的加载顺序,或者设置第二个noConflict()调用以在没有cj对象的情况下有条件地运行。
答案 1 :(得分:1)
我已完成bug report。应用此补丁以一种看似干净的方式解决了我的问题。这样,如果没有必要,jQuery库不会被多次加载。