これを実現する 1 つの方法は、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() をオーバーライドしているようで、ds_pre_render_alter() の実装に #attached を追加しても、どこにも行きませんでした。残念ながら、カスタム DS .inc レイアウト ファイルでの .js ファイルの宣言もサポートされていません。
drupal_add_js() を .tpl.php テンプレート ファイルに直接実装すると、期待どおりに機能しない可能性があり、「ベスト プラクティス」ではないようです ( https://drupal.stackexchange.com/questions/20520/drupal-add-js-inを参照)。 -html-テンプレートファイル)。
興味深いことに、Drupal 8 では drupal_add_js() が #attached を支持して完全に削除され、テンプレートに JavaScript を直接追加できるようになります。https://www.drupal.org/theme-guide/8/assets を参照してください)。