web-dev-qa-db-ja.com

カスタムモジュールjavascript Drupal.behavioursが読み込まれないようです

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';
}
1
fkaufusi

添付するときは、必ず「ライブラリ」の正しい名前を使用してください

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
3
fkaufusi

ライブラリがmymoduleと呼ばれている場合、添付されているはずです

function mytheme_preprocess_block(&$variables) {
  if ($variables['elements']['#id'] == 'myblock') {
    $variables['#attached']['library'][] = 'module_name/mymodule';
  }
}
2
Igor Taldenko