簡體   English   中英

如何在Drupal 8主題中添加JavaScript庫?

[英]How to add javascript library in Drupal 8 theme?

我試圖在我正在構建的Drupal 8主題中包含一個自定義javascript文件來操縱菜單。 我按照Drupal 8主題指南中的說明進行操作,包括在我的.info.yml文件中:

#js libraries
libraries:
- dcf/base

並在我的.libraries.yml文件中定義它:

base:
version: 1.x
js:
    js/endscripts.js
dependencies:
    - core/drupal
    - core/underscore
    - core/backbone
    - core/jquery

最后使用鈎子實現創建一個.theme文件(我不是真正的PHP開發人員,所以我主要從指南中的示例進行了復制/粘貼工作)

<?php

function dcf_page_alter(&$page) { 
  $page['#attached']['library'][] = 'dcf/base';
}

?>

我清除了緩存,注銷以查看未登錄頁面(管理視圖包含很多額外的腳本和其調用的css文件),然后查看源以查看是否正在加載我的腳本。 我在庫中列出的所有依賴項都將被加載,而不是腳本本身。

在此處輸入圖片說明

腳本本身只是一個基本測試,應該使用JQuery隱藏我的主菜單,並以主題指南中要求的“嚴格”格式顯示。

(function () {
  "use strict";
  // Custom javascript
  $(document).ready(function() {
    $("#block-dcf-main-menu").hide();
  });
})();

我現在不知所措。 我的直覺是錯誤是在我的鈎子實現中,因為我確實不了解Drupal的鈎子系統,但是據我所知,這仍然可能只是他們尚未完成Drupal 8的實現(我正在為即將進行的網站重建為我的組織測試Drupal 8,並且當前正在運行Drupal 8.0.x-beta2(未安裝其他模塊)

這就是我做到的

my_theme.info

沒有圖書館聲明

my_theme.libraries.yml

my_theme:
  version: 1.0
  css:
    theme:
      css/my_theme.css: {}
  js:
    js/my_theme.js: {}
  dependencies:
    - core/jquery
    - core/drupal
    - core/drupalSettings

my_theme.theme

/*
*
*    see doc to attach library more specifically
*
* */
function my_theme_page_attachments_alter(array &$attachments) {
    $attachments['#attached']['library'][] = 'my_theme/my_theme';    
}

/js/my_theme.js

 console.log('it works!');

/css/my_theme.css

 /*smthg radical happens*/
 body{
   display:none;
 }

答案就像在clive的評論中一樣,是腳本末尾缺少的{}。 因此,mytheme.libraries.yml中的腳本聲明應為
js:js / endscripts:{}

暫無
暫無

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

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