Come faccio a richiedere un tema Jquery (per utenti anonimi)?


7

Sto creando un tema per D8 chiamato "herchel". Sto cercando di ottenere questo tema per richiedere jquery su tutte le pagine (D8 non carica Jquery per utenti anonimi per impostazione predefinita)

Guardando attraverso quale poca documentazione posso trovare oltre ai temi principali, ho creato un file chiamato herchel.libraries.yml

Ho provato quanto segue ... tutto senza fortuna:

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

-

drupal:
version: VERSION
  dependencies:
    - core/jquery

-

herchel:
version: VERSION
  dependencies:
    - core/jquery

Qualcuno ha qualche idea su cosa devo mettere in questo?


Il terzo ha ragione, penso che il problema sia solo uno spazio bianco - prova a rientrare la riga con la versioncorrispondenzadependencies
Clive

Risposte:


11

Mi sono imbattuto in questo aggiornamento di uno dei miei temi di contribuzione a Drupal 8 come volevo jquery.once per utenti anonimi. Ecco cosa ho fatto che funziona alla grande:

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

Quindi nel file herchel.theme del tuo tema .

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

Prestare attenzione anche al rientro per il codice YML. Anche se non è ancora ben documentato, puoi dare un'occhiata a questo problema e al suo registro delle modifiche.

Sostituisci hook_library_info () con il file * .libraries.yml

Si noti che nel codice sopra viene visualizzato anche il file "scripts.js" di un tema teorico, ma potrebbe non essere necessario. Nel mio tema, questo è ciò che utilizza jquery per chiamare il codice personalizzato.

Questo codice è probabilmente un buon riferimento anche per i bit YML. Si noti che in entrambi i casi versionè allo stesso livello di dependencies.

Ho anche fatto un elenco di problemi di Drupal 8 che ho riscontrato e ho preso parte con il mio aggiornamento D8.

Aggiornare:

Ho corretto il codice, abbiamo riscontrato questo problema: sostituisci i valori dell'array della libreria #attached con stringhe basate sul nome del provider

Nota questo:

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

vs.this

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

Ho provato e gli errori sono andati via. :)


Danny, sei fantastico! Ma sto ricevendo alcuni errori PHP. Avvertenza: explode () prevede che il parametro 2 sia stringa, matrice fornita in _drupal_add_library () (riga 2676 di core \ Includes \ common.inc). Avvertenza: explode () prevede che il parametro 2 sia stringa, matrice fornita in drupal_get_library () (riga 2741 di core \ Includes \ common.inc). Questi errori compaiono indipendentemente dal contenuto del file herchel.libraries.yml. Ho provato a aggirarlo un po 'senza fortuna. Ho anche provato il tuo codice da Gratis, ma sembra che sia stato eseguito il commit del problema 8507583
mherchel

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

Mike, il nuovo codice in Gratis è solo nella versione dev ( drupalcode.org/project/gratis.git/tree/refs/heads/8.x-1.x ) e l'ho testato e funziona con l'ultima Alpha di D8. Sono praticamente a capo di un progetto oggi, ma potrei essere in grado di aiutare questo fine settimana. Quale versione di D8 stai usando?
Danny Englander,

Come è possibile raggiungere questo obiettivo senza utilizzare una funzione di preelaborazione?
itsdarrylnorris,

11

Nel tuo tema crea il file delle librerie herchel.libraries.yml. In questo file inserisci:

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

In herchel.info.ymlput:

libraries:
  - herchel/libname

C'è stato un problema al riguardo ed è stato risolto durante i Drupal Developer Days a Szeged.
Dragan Eror,

Ho aggiornato e testato il codice nella mia risposta, questo è probabilmente il problema che abbiamo riscontrato in base al messaggio di errore. drupal.org/node/2203407
Danny Englander,

Forse questo aiuterà anche ... Pagina della documentazione sull'implementazione delle biblioteche drupal.org/node/2216195
Dragan Eror

0

Forse hai aggiunto spazi prima di "dipendenze:"

questo è vero:

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

per esempio questo è sbagliato:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.