簡體   English   中英

將js / jquery嵌入Display Suite布局模板文件的最佳方法?

[英]Best way to embed js/jquery into a Display Suite layout template file?

我正在使用顯示套件(所有當前版本)將Drupal網站作為主題。 如您所知,在drupal中,有很多方法可以達到同等的效果。 我在展示套件中創建了許多自定義布局。 現在,我想向其中的一些布局添加jquery,以便僅在顯示這些布局時才加載jquery(與在主題的每個頁面上加載相同的jquery文件相反)。

當然,我可以使用諸如drupal_add_js()或$ form#attached等之類的東西。但是在模板文件中添加標簽又有什么問題呢? 執行此操作的“ Display Suite方法”是什么-我必須相信他們(Display Suite團隊)已經想到了這一點...

謝謝。

實現此目的的一種方法是通過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()的實現中添加#attach並沒有讓我感到困惑。 不幸的是,也不支持在自定義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(),以支持#attached,並且可以直接在模板中添加JavaScript,請參閱https://www.drupal.org/theme-guide/8/assets )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM