Come faccio ad aggiungere CSS e JavaScript a <head>?


8

Voglio aggiungere il seguente codice nella mia sezione della prima pagina usando un sotto-tema Drupal 8 di Bartik.

Qualcuno può aiutare come farlo? Qual è il modo migliore per farlo in questa nuova versione ramoscello del tema? Dov'è page.tpl?

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="stepcarousel.js"></script>

Risposte:


7

Su di te THEME.libraries.yml:

global-styling:
  version: VERSION
  header: true // <--- To the header!!!
  css:
    theme:
      css/mystyle.css: {} // if you want add custom css
  js:
    js/stepcarousel.js: {}
  dependencies:
    - core/drupal // for use drupal.js
    - core/jquery

Su di te THEME.info.yml:

name: THEME
base theme: Bartik
...
libraries:
  - THEME/global-styling
...

e Cancella cache

Dov'è page.tpl?

Qui: core / modules / system / templates / page.html.twig

Se vuoi usarlo, copia nella cartella del tema all'interno dei modelli, in questo modo:

 THEME
   templates
     page.html.twig

Cambia tutto quello che vuoi e Cancella cache


6

In Drupal 8, fogli di stile e file JavaScript sono allegati come librerie :

Aggiungi un file yourtheme.libraries.info alla cartella del tuo tema (o modulo personalizzato):

power-slider:
  version: 1.x
  js:
    js/power-slider.js: {}
  css:
    theme:
      css/power-slider.css: {}
  dependencies:
    - core/jquery

E quindi collegare la libreria a un array di rendering. Ad esempio, questo allega la libreria a tutte le pagine:

function yourtheme_page_attachments_alter(&$page) {
  $page['#attached']['library'][] = 'yourtheme/power-slider';
}

Questo approccio ha il vantaggio di essere riutilizzabile. Definisci i percorsi necessari una volta e puoi riutilizzarli in diversi punti del codice.

Vedere:

Questa risposta è stata molto ispirata dalla risposta di Berlino .


I collegamenti sono interrotti
— Yzmir Ramirez,

Aggiornato i collegamenti.
— Neograph734,

1

In Drupal 8 risorse client come file CSS e JavaScript sono allegate per il rendering di array :

$element['#attached'] = array('js' => array(PATH_TO_JS));

Dove $elementpuò essere un array di rendering di output o un elemento modulo.

In alternativa, è possibile registrare una libreria definendola in un file * .libraries.info

power-slider:
  version: 1.x
  js:
    js/power-slider.js: {}
  dependencies:
    - core/jquery

e quindi collegare la libreria a un array di rendering come questo:

$element['#attached']['library'][] = 'NAMEOFTHEMODULE/power-slider';

Quest'ultimo approccio ha il vantaggio di essere riutilizzabile. Definisci i percorsi necessari una volta e puoi riutilizzarli in diversi punti del codice.


1
Dopo aver scritto questo hook_library_info () è stato sostituito con un file * .libraries.yml. Vedi drupal.stackexchange.com/a/109029/12010 e drupal.org/node/2216195
— batigolix

non penso che sia davvero obsoleto. ha bisogno di qualche modifica, tutto qui. ci provo
— batigolix,

Ho aggiornato la risposta
— batigolix il

@batigolix, bella modifica. Tuttavia, è probabilmente meglio che si registra la risposta aggiornato, se la vostra risposta, invece di cambiare il codice di Berliner (codice di modifica tendono ad essere respinta come troppo invadente).
— Free Radical,

OK, ho aggiunto la versione aggiornata come nuova risposta. hai ragione: ho dovuto cambiare più di quanto pensassi fosse inizialmente necessario.
— Batigolix,
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.