Drupal 8 - css conexiune și js

După cum știți în Drupal 7 conexiune JS și CSS fișiere au fost realizate în mod simplu și precis utilizând funcțiile corespunzătoare:

  • drupal_add_js () - conexiune fișier JS
  • drupal_add_css () - Stiluri de conectare

Și acolo a fost un alt biblioteci de conectare:

Versiunea a 8-a acestei abordări a fost abandonată în favoarea utilizării bibliotecilor. Biblioteca în Drupal 8 - un set de fișiere, JS și / sau foaie de stil, cu dependențele necesare.

În mod implicit, Drupal nu se mai încarcă toate paginile site-ului dvs. necesare JS sau CSS fișiere, în timp ce ești, evident, el nu a specificat motivul este o influență negativă asupra performanței. De exemplu, dacă creați o bibliotecă cu fișierul JS pe Jquery, dar nu a specificat în funcție de bibliotecă pe care biblioteca depinde de biblioteci suplimentare - Jquery, Drupal este în mod natural să nu se conecteze automat Jquery.

Acum, să ordine. Ca întotdeauna vom fi testate pentru un modul personalizat. În cazul meu, va fi numit library_ex.

Cum de a crea o bibliotecă în Drupal 8

Pentru a crea biblioteci folosind un fișier special în format YML, numele care se bazează pe un șablon

Am act de faptul că toate fișierele din YML format conține o descriere a unui obiect, de exemplu, fișierul module_name.info.yml - conține o descriere a modulului, pe care o puteți vedea pe pagina de module.

În cazul meu, acest fișier va avea library_ex.libraries.yml numele

Prima linie este numele bibliotecii, și apoi lista de parametri. Fiecare parametru începe pe o linie nouă ca valoare.

css - conține o listă de fișiere pe care doriți să le conectați utilizând biblioteca. După cum se poate vedea în acest parametru, există tipuri suplimentare, în acest caz, de bază. Acest parametru indică tipul de stil. Lista posibilelor tipuri de stiluri:

  • de bază - în acest tip trebuie să fie conectat la fișierele, care sunt stiluri pentru elemente HTML, cum ar fi un fișier pentru a reseta normaliza stiluri. Acest tip de fișier atribuie greutate CSS_BASE = -200
  • aspect - în acest tip trebuie să fie conectat la fișierele, care stilurile se aplică poziționarea elementelor pe pagină, cum ar fi fișierele cadru Bootstrap. Acest tip de fișier atribuie greutate CSS_LAYOUT = -100
  • componentă - în acest tip trebuie să fie conectat la fișierele, care stilurile sunt utilizate de mai multe ori pe pagină. Acest tip de fișier atribuie greutate CSS_COMPONENT = 0
  • de stat - în acest tip trebuie să fie conectat la dosarele, care se referă la stilurile schimba pe partea de client. Acest tip de fișier CSS_STATE atribuie greutate = 100
  • Tema - în acest tip de fișiere care urmează să fie conectate, care utilizează stilul vizual pentru componenta. Acest tip de fișier atribuie toate CSS_THEME = 200

Această abordare este definit standarde SMACSS, deși folosesc BEM - bine, din nou, în interval.

js - conține o listă de fișiere JS pe care doriți să le conectați utilizând biblioteca.

dependențe - conține lista de biblioteci care urmează să fie conectate prin utilizarea acestei biblioteci, de exemplu, Jquery.

Odată cu formarea bibliotecii terminat, acum să vedem cum să se conecteze această bibliotecă?

Am observat că în fișierul module_name.libraries.yml - aveți posibilitatea să specificați orice număr de biblioteci.

Conectați biblioteca la pagina

Pentru a conecta folosind hook_preprocess_page cârlig () al modulului nostru

Ca un fișier JS în biblioteca noastră, ne-am indicat un fișier - library_ex.js, și că vom avea cel puțin ceva se întâmplă în pagină, obținem doar de alertă ()

În continuare vom activa modul nostru, dacă nu ați făcut acest lucru, sau curățați site-ul cache-ul, în cazul în care modulul a fost deja activat. Salt la orice pagină de pe site-ul dvs. și am constatat că nu a existat apare un avertisment:

Drupal 8 - css conexiune și js

Biblioteca excelenta este conectat la toate paginile site-ului. Acum, să-l conectați la o anumită pagină pentru că puțin sa schimbat în libraries_ex.module fișier de cod

Conectarea bibliotecii pentru a forma elementul de tip

Vă puteți conecta, de asemenea, biblioteca la orice tip de element din formular, cum ar fi tipul - textarea, putem folosi acest hook_element_info_alter cârlig ()

Conectarea creanga șablon de bibliotecă

Deci, ne putem conecta la bibliotecă și șablonul crenguță

Se trece de la parametrii PHP pentru JS fișierul nostru de bibliotecă

Ca și în Drupal 7, putem trece orice parametru de la PHP la dosar JS biblioteca noastră prin drupalSettings. Pentru a face acest lucru în descrierea bibliotecii noastre (library_ex.libraries.yml), ca dependențe indică drupalSettings

Prin urmare, atunci când conectarea bibliotecii, trebuie să specificați numele parametrului și valoarea sa, care va fi disponibil în fișierul JS în biblioteca noastră

Prin urmare, valorile prezentate vor fi disponibile în drupalSettings noastre fișier JS

Conectarea CSS la distanță / fișier JS

Pentru a vă conecta la fișierele de bibliotecă care se află pe un server de la distanță, de exemplu, ea poate fi o bibliotecă Yandex.Maps, trebuie să specificați calea completă la fișierul și adaugă un tip suplimentar de atribut: extern. prin urmare, conexiunea Yandex.Maps va fi după cum urmează:

În plus, puteți trece atribute suplimentare

Conectarea o bibliotecă extern de la CDN

Putem folosi, de asemenea, bibliotecile externe care sunt în CDN, cum ar fi conectarea bibliotecii colorbox vyglyadesh este după cum urmează:

Încorporarea script JS pe pagina

Puteți încorpora, de asemenea, în linie JS, prin hook_page_attachments cârlig (), de exemplu, obține o alertă regulată:

In aceasta cred că poate fi finalizată.

Descărcați modulul utilizat în exemplul