本篇參考自這篇Managing JavaScript in Drupal 7
在drupal中有幾種方式可以在頁面含入自訂的Javascript函式(庫),分述如下:
- 利用drupal_add_js() 指定要含入的js檔,或是以字串型式直接含入javascript的程式碼,適用於module、theme、自訂PHP。範例如下:
drupal_add_js('misc/collapse.js'); //含入js檔案 drupal_add_js('misc/collapse.js', 'file'); //含入js檔案 drupal_add_js('jQuery(document).ready(function () { alert("Hello!"); });', 'inline'); //嵌入程式碼 drupal_add_js('jQuery(document).ready(function () { alert("Hello!"); });', array('type' => 'inline', 'scope' => 'footer', 'weight' => 5) ); //在 footer 嵌入程式碼 drupal_add_js('http://example.com/example.js', 'external'); //含入外部js檔案 //建立自訂模組的設定值 drupal_add_js(array('myModule' => array('key' => 'value')), 'setting'); //設置模組myModule的 Drupal.settings 設定值 //取出設定值 $setings['key']=Drupal.settings.myModule.key;
- 在module的 .info檔中含入js檔,加入以下內容即可
scripts[] = somescript.js
- 要使用jQuery的話,用以下的語法
(function ($) { // 把你的jQuery程式放在這裡 })(jQuery);
- 使用Drupal.behaviors整合不同模組的javascript,可讓ajax產生的內容可以執行原本預計的程式,語法如下:
(function ($) { //exampleModule 為自訂的名稱,通常可使用自訂模組的名稱 Drupal.behaviors.exampleModule = { attach: function (context, settings) { //要執行的程式,本範例會綁定 $('.example')的click事件 $('.example', context).click(function () { $(this).next('ul').toggle('show'); }); } }; })(jQuery);