テーマにJquery(匿名ユーザー用)を要求させるにはどうすればよいですか?


7

私は 'herchel'と呼ばれるD8のテーマを作成しています。すべてのページでjqueryを要求するようにこのテーマを取得しようとしています(D8はデフォルトで匿名ユーザーのJqueryをロードしません)

私が行う上で見つけることができるなけなしのドキュメントコアなテーマに加えて、私はherchel.libraries.ymlというファイルを作成しました

私は次のことを試しました...すべて運が悪い:

drupal.herchel:
version: VERSION
  dependencies:
    - core/jquery

-

drupal:
version: VERSION
  dependencies:
    - core/jquery

-

herchel:
version: VERSION
  dependencies:
    - core/jquery

これに何を入れる必要があるかについて誰かが何かアイデアを持っていますか?


3つ目は正しいです。問題は空白のみだと思います- version一致する行をインデントしてみてくださいdependencies
Clive

回答:


11

匿名ユーザーに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';

私はテストし、エラーはなくなりました。:)


ダニー、あなたは素晴らしい!しかし、いくつかのPHPエラーが発生します。警告:explode()は、パラメーター2が文字列であると想定し、_drupal_add_library()で指定された配列(core \ includes \ common.incの2676行目)。警告:explode()はパラメーター2が文字列であると想定します。配列はdrupal_get_library()で指定されます(core \ includes \ common.incの行2741)。これらのエラーは、herchel.libraries.ymlファイルの内容に関係なく表示されます。少し運が悪かったので、少し回避してみました。私もGratisからコードを試しましたが、問題8507583がコミットされる前のようです
mherchel

1
$ page ['#attached'] ['library'] [] = 'libraryprovider / libraryname';

マイク、Gratisの新しいコードは開発版のみにあり(drupalcode.org/project/gratis.git/tree/refs/heads/8.x-1.x)、私はそれをテストしました。最新のAlphaで動作しますD8。今日はかなりプロジェクトに向かいますが、今週末は手助けできるかもしれません。D8のどのバージョンを使用していますか?
ダニーイングランド人2014

前処理関数を使用せずにこれを実現するにはどうすればよいですか?
itsdarrylnorris 2015年

11

テーマにライブラリファイルを作成しますherchel.libraries.yml。このファイルに入れてください:

libname:
  version: 1.x
  js:
    js/scripts.js: {}
  css:
    theme:
      css/styles.css: {}
  dependencies:
    - core/jquery

つまりherchel.info.yml

libraries:
  - herchel/libname

この問題があり、セゲドのDrupal Developer Daysで修正されています。
Dragan Eror 14

私は私の回答のコードを更新してテストしました。これは、エラーメッセージに基づいて実行した問題である可能性が高いです。drupal.org/node/2203407
ダニーイングランド人

多分これも役立つでしょう...ライブラリの実装に関するドキュメントページdrupal.org/node/2216195
Dragan

0

「依存関係」の前にスペースを追加する必要があるかもしれません:

これは本当です:

google-maps:
  version: VERSION
  js:
    vendor/gmap3.js: {cope: footer}
    //maps.google.com/maps/api/js?key=000000: { type: external, cope: footer}
  dependencies:
    - core/jquery
    - core/drupal
    - core/drupalSettings

たとえばこれは間違っています:

google-maps:
  version: VERSION
  js:
    vendor/gmap3.js: {cope: footer}
    //maps.google.com/maps/api/js?key=000000: { type: external, cope: footer}
    dependencies:
      - core/jquery
      - core/drupal
      - core/drupalSettings
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.