【发布时间】:2014-10-22 16:51:54
【问题描述】:
我正在尝试在我正在构建的 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,没有安装其他模块)
【问题讨论】:
-
远射,但请尝试将
js/endscripts.js更改为js/endscripts.js: {}并清除缓存。您也不需要在 THEME.info.yml 文件中引用该库并将其附加到更改挂钩中,一个就足够了 -
做到了。不知道为什么,但现在脚本出现了。如果您想对此效果添加答案,我会回来接受它。
-
@whiplashomega 我正在尝试在 Drupal 8 中为自定义模块中的小部件做同样的事情。你能帮我吗?向我指出任何资源或您开发的项目?谢谢
-
@Sach 你可以看到drupal.org/developing/api/8/assets
标签: javascript php drupal drupal-theming drupal-8