匿名ユーザーにjquery.onceが欲しかったので、この投稿テーマの1つをDrupal 8にアップグレードしました。これが私が素晴らしいことをしたことです:
ではherchel.libraries.yml
herchel-corescripts:
version: VERSION
js:
js/scripts.js: {}
dependencies:
- core/jquery
- core/drupal.ajax
- core/drupal
- core/drupalSettings
- core/jquery.once
次に、テーマのherchel.themeファイルで。
function herchel_preprocess_page(&$vars, $hook) {
// Render the library as laid out in herchel.libraries.yml
$libraries['#attached']['library'][] = 'herchel/herchel-corescripts';
\Drupal::service('renderer')->renderRoot($libraries);
}
YMLコードのインデントにも注意してください。実際にはまだ十分に文書化されていませんが、この問題とその変更ログを確認できます。
hook_library_info()を* .libraries.ymlファイルで置き換えます
上記のコードには理論上のテーマの「scripts.js」ファイルも表示されていますが、必要ない場合もあります。私のテーマでは、jqueryを使用してカスタムコードを呼び出します。
このコードは、おそらくYMLビットにとっても適切なリファレンスです。どちらの場合もversion
と同じレベルdependencies
です。
また、私が遭遇したDrupal 8の問題のリストを作成し、D8アップグレードに参加しました。
更新:
コードを修正しました。この問題が発生しました:#attachedライブラリ配列の値をプロバイダーの名前空間付きの文字列に置き換えます
これに注意してください:
$libraries['#attached']['library'][] = array('herchel', 'herchel-corescripts');
これに対して
$libraries['#attached']['library'][] = 'herchel/herchel-corescripts';
私はテストし、エラーはなくなりました。:)
version
一致する行をインデントしてみてくださいdependencies