2011-06-07 35 views
5

在新鮮的Drupal安裝中安裝了CiviCRM,自定義了CiviCRM和添加的數據。實際的Drupal站點是單獨安裝的。現在它已經完成了,我將CiviCRM與新的Drupal站點(文件和數據庫)合併在一起。一切似乎工作,除非登錄到CiviCRM:http://example.com/civicrm/dashboard它說:Drupal CiviCRM Javascript Conflict

「必須啓用JavaScript才能使用儀表板功能。」

並且是啓用Javascript。 CiviCRM菜單全部破碎等。 Chrome還會報告以下錯誤:

遺漏的類型錯誤:對象#有沒有方法 '菜單' jquery.textarearesizer.js:5Uncaught類型錯誤:對象#有沒有方法 'TextAreaResizer' main.js:6Uncaught類型錯誤:對象#沒有方法「循環」 jquery.textarearesizer.js:5未定義類型錯誤:對象#沒有方法'TextAreaResizer'

未啓用JavaScript壓縮性能。有任何想法嗎?

+0

CiviCRM使用與Drupal不同的jQuery版本,有時它們會相互衝突。你很可能有類似的問題。 您是使用「庫存」Drupal還是自定義分佈?我們也在研究類似的問題,所以如果您發現任何有趣的內容,請告訴我們。 – Scorchio 2011-08-09 12:32:55

+0

@heavymark:你是否設法解決這個問題?我想知道,因爲我面臨類似的問題 – 2012-01-24 20:31:58

回答

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

我已完成bug report。應用這個補丁以一種看似乾淨的方式解決了我的問題。這樣,如果沒有必要,jQuery庫不會被加載多次。