JavaScriptファイルを含むカスタムモジュールがあります。 JavaScriptファイルの内容は次のとおりです。
(function ($, Drupal) {
Drupal.behaviors.promotionalOverlayBlock = {
attach: function(context, settings) {
console.log("hello world")
}
};
})(jQuery, Drupal);
JavaScriptファイルの場所:
mymodule/js/overlayblock.js
私のmymodule.libraries.yml
ファイルには次のものが含まれます。
mymodule:
js:
js/overlayblock.js: {}
dependencies:
- core/jquery
- core/jquery.once
- core/drupalSettings
drupalページをロードすると、ブラウザコンソールに「hello world」が表示されることを期待しています。しかし、何も表示されません。ページのhtmlコードを表示して、そこでJavaScriptを検索しましたが、私のjavascriptファイルに関連する何かを見つけることができないようです。
ここで何が問題になるのでしょうか?
これが、fook_preprocess_block()を介してライブラリをアタッチする方法です。アタッチされたものを追加するのに適切な場所かどうかはわかりません。
function mymodule_preprocess_block(&variables){
$variables['#attached']['library'][] =
'mymodule/overlayblock';
}
添付するときは、必ず「ライブラリ」の正しい名前を使用してください
mymodule.libraries.yml
ファイル。 最初の行はライブラリ名です。
ライブラリファイル内で別の名前を使用し、間違ったライブラリ名を添付しました。
function mymodule_preprocess_block(&variables){
$variables['#attached']['library'][] =
'mymodule/mylibraryname';
}
私のライブラリファイルmymodule.libraries.yml
mylibraryname:
js:
js/promotional-overlay-block.js: {}
dependencies:
- core/jquery
- core/jquery.once
- core/drupalSettings
ライブラリがmymoduleと呼ばれている場合、添付されているはずです
function mytheme_preprocess_block(&$variables) {
if ($variables['elements']['#id'] == 'myblock') {
$variables['#attached']['library'][] = 'module_name/mymodule';
}
}