一種方式是通過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)。