Wie kann ein Thema Jquery erfordern (für anonyme Benutzer)?

7

Ich erstelle ein Thema für D8 mit dem Namen 'herchel'. Ich versuche, dieses Thema so zu gestalten, dass auf allen Seiten eine Abfrage erforderlich ist (D8 lädt standardmäßig keine Abfrage für anonyme Benutzer).

Beim Blick durch das , was wenig Dokumentation i auf tun finden zusätzlich zu den Kernthemen, habe ich eine Datei namens herchel.libraries.yml

Ich habe folgendes versucht ... alles ohne Glück:

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

- -

drupal:
version: VERSION
  dependencies:
    - core/jquery

- -

herchel:
version: VERSION
  dependencies:
    - core/jquery

Hat jemand irgendwelche Ideen, was ich dazu beitragen muss?

mherchel
quelle
Der dritte ist richtig, ich denke, das Problem ist nur Leerzeichen - versuchen Sie, die Linie einzurücken, damit versionsie übereinstimmtdependencies
Clive

Antworten:

11

Ich habe dieses Upgrade eines meiner Contrib-Themen für Drupal 8 durchgeführt, da ich jquery.once für anonyme Benutzer haben wollte. Folgendes habe ich getan, was großartig funktioniert:

In herchel.libraries.yml

herchel-corescripts:
  version: VERSION
  js:
    js/scripts.js: {}
  dependencies:
    - core/jquery
    - core/drupal.ajax
    - core/drupal
    - core/drupalSettings
    - core/jquery.once

Dann in der Datei herchel.theme Ihres Themas .

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);
}

Beachten Sie auch den Einzug für den YML-Code. Obwohl es noch nicht so gut dokumentiert ist, können Sie sich dieses Problem und sein Änderungsprotokoll ansehen.

Ersetzen Sie hook_library_info () durch die Datei * .libraries.yml

Beachten Sie, dass Sie im obigen Code auch die Datei "scripts.js" eines theoretischen Themas sehen, diese jedoch möglicherweise nicht benötigen. In meinem Thema verwendet jquery den benutzerdefinierten Code.

Dieser Code ist wahrscheinlich auch eine gute Referenz für die YML-Bits. Beachten Sie, dass in beiden Fällen versionauf dem gleichen Niveau wie dependencies.

Ich habe auch eine Liste der Drupal 8-Probleme erstellt, auf die ich gestoßen bin und an denen ich mit meinem D8-Upgrade teilgenommen habe.

Aktualisieren:

Ich habe den Code behoben, auf den wir dieses Problem gestoßen sind : Ersetzen Sie # angehängte Bibliotheksarraywerte durch Zeichenfolgen mit Provider-Namespace

Beachten Sie Folgendes:

 $libraries['#attached']['library'][] = array('herchel', 'herchel-corescripts');

dies

$libraries['#attached']['library'][] = 'herchel/herchel-corescripts';

Ich habe getestet und die Fehler sind verschwunden. :) :)

Danny Englander
quelle
Danny, du bist großartig! Aber ich bekomme einige PHP-Fehler. Warnung: explode () erwartet, dass Parameter 2 eine Zeichenfolge ist, ein Array, das in _drupal_add_library () angegeben ist (Zeile 2676 von core \ includes \ common.inc). Warnung: explode () erwartet, dass Parameter 2 eine Zeichenfolge ist, ein Array, das in drupal_get_library () angegeben ist (Zeile 2741 von core \ includes \ common.inc). Diese Fehler werden unabhängig von der Datei herchel.libraries.yml angezeigt. Ich habe versucht, ein bisschen ohne Glück daran zu arbeiten. Ich habe auch Ihren Code von Gratis ausprobiert, aber das scheint zu sein, bevor die Ausgabe 8507583 festgeschrieben wurde
mherchel
1
$ page ['# attach'] ['library'] [] = 'libraryprovider / libraryname';
Mike, der neue Code in Gratis ist nur in der Entwicklerversion ( drupalcode.org/project/gratis.git/tree/refs/heads/8.x-1.x ) und ich habe ihn getestet und er funktioniert mit dem neuesten Alpha von D8. Ich bin heute ziemlich fertig mit einem Projekt, aber vielleicht kann ich dieses Wochenende helfen. Welche Version von D8 verwenden Sie?
Danny Englander
Wie kann dies ohne Vorverarbeitungsfunktion erreicht werden?
Itsdarrylnorris
11

Erstellen Sie in Ihrem Design eine Bibliotheksdatei herchel.libraries.yml. In diese Datei einfügen:

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

In herchel.info.ymlput:

libraries:
  - herchel/libname
Dragan Eror
quelle
Es gab ein Problem , das bei den Drupal Developer Days in Szeged behoben wurde.
Dragan Eror
Ich habe den Code in meiner Antwort aktualisiert und getestet. Dies ist eher das Problem, auf das wir aufgrund der Fehlermeldung gestoßen sind. drupal.org/node/2203407
Danny Englander
Vielleicht hilft dies auch ... Dokumentationsseite über die Implementierung von Bibliotheken drupal.org/node/2216195
Dragan
0

Möglicherweise haben Sie Leerzeichen vor "Abhängigkeiten" hinzugefügt:

Das ist wahr:

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

Zum Beispiel ist das falsch:

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
Amin
quelle