[英]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.