2015-08-17 27 views
0

我正在使用展示套件主題化一個drupal網站 - 所有當前版本。您可能會意識到,在drupal中有很多方法可以實現相同的結果。我在展示套件中創建了許多自定義佈局。現在我想爲其中一些佈局添加jquery,以便僅在顯示這些佈局時加載jquery(而不是在主題中的每個頁面上加載相同的jquery文件)。將js/jquery嵌入到Display Suite佈局模板文件中的最佳方法?

當然,我可以使用像drupal_add_js()或$ form#等附加等東西。但是,在我的模板文件中添加標籤有什麼問題嗎?什麼是'顯示套件方法'這樣做 - 我必須相信他們(顯示套件團隊)已經想到了這一點...

謝謝。來完成此

回答

0

一種方式是通過hook_ds_pre_render_alter(),例如:

/** 
* Implements hook_ds_pre_render_alter(); 
* Add custom JavaScript. 
*/ 
function MYMODULE_ds_pre_render_alter(&$layout_render_array, $context, &$vars) { 
    if($vars['type'] === 'MY_NODE_TYPE' && $vars['view_mode'] === 'full') { 
    drupal_add_js(drupal_get_path('module', 'MYMODULE') . '/js/my_js_file.js'); 
    } 
} 

通過#attached添加JavaScript,因爲它似乎更清潔和更符合在Drupal 8採取的做法線將是優選的,但是我找不到辦法做到這一點。 Display Suite似乎覆蓋了hook_node_view(),並且將#attached添加到ds_pre_render_alter()的實現中並沒有讓我獲得任何地方的幫助。在一個自定義DS .inc佈局文件中聲明一個.js文件也不幸不被支持。

直接在.tpl.php模板文件中實現drupal_add_js()可能無法按預期工作,似乎不是'最佳實踐'(請參閱https://drupal.stackexchange.com/questions/20520/drupal-add-js-in-html-template-file)。

有趣的是,儘管在Drupal 8中drupal_add_js()被完全刪除,並且有可能直接在模板中添加JavaScript,請參閱https://www.drupal.org/theme-guide/8/assets)。

相關問題