Drupal CiviCRM Javascript冲突

cch*_*era 5 javascript drupal drupal-6 civicrm

在新的Drupal安装中安装了CiviCRM,定制了CiviCRM并添加了数据.实际的Drupal站点是在单独的安装中单独构建的.现在它已经完成,我将CiviCRM与新的Drupal Site(文件和数据库)合并.一切似乎都有效,除非登录CiviCRM:http://example.com/civicrm/dashboard它说:

"必须在浏览器中启用Javascript才能使用仪表板功能."

是的Javascript已启用.CiviCRM菜单全部坏了等等.Chrome还会报告以下错误:

未捕获的TypeError:对象#没有方法'menu'jquery.textarearesizer.js:5Uncaught TypeError:Object#没有方法'TextAreaResizer'main.js:6 Uncaught TypeError:Object#没有方法'cycle'jquery.textarearesizer.js:5Uncaught TypeError:Object#没有方法'TextAreaResizer'

未启用性能下的Javascript压缩.有任何想法吗?

Mat*_*son 2

CiviCRM 使用 jQuery 对象作为 cj 而不是 $,以避免与 Drupal JQuery 库发生冲突。理论上,它们可以使用不同的版本,因为它们的命名空间不同(jQuery 使用 noConflict() 正式支持)。

您遇到的冲突可能来自您的修改,导致 Drupal 或 CiviCRM 在引导程序中的不同点加载其 jQuery 库,或者使其尝试多次加载 jQuery。这将使将 $ 转换为 cj 的操作在实例化 Drupal jQuery 对象之后而不是之前获取它,从而使 Drupal 和/或 CiviCRM 无需将其需要附加到 $ 对象的库(您是否使用 # 代替)美元?)。

搜索相关页面及其 JavaScript 中所有使用 noConflict() 的代码。您应该只能在一个地方找到它。与 demo.civicrm.org 页面进行比较以查看差异,您可能会在其中某处发现额外的一个。修复此问题的最佳希望是调整 Drupal 系统表中自定义模块的加载顺序,或者设置第二个 noConflict() 调用以在不存在 cj 对象的情况下有条件地运行。