Drupal 8 – aggiungi libreria javascript con parametri dinamici

Dang… a volte Drupal ti fa davvero soffrire…
Ma mi piace comunque… povero Drupal, a nessuno piace perché nessuno lo capisce, LOL.

Ok, facciamo sul serio, se hai problemi a modificare i parametri di una libreria Javascript collegata, non sei solo, vediamo come farlo.

In primo luogo, mi riferisco all'aggiunta di javascript secondo la documentazione ufficiale:

https://www.drupal.org/docs/8/creating-custom-modules/adding-stylesheets-css-and-javascript-js-to-a-drupal-8-module

In secondo luogo, la cosa che ho trovato difficile da fare è stato quello di modificare i parametri in modo dinamico, nel mio caso è stato utilizzando le impostazioni de
l mio modulo. Quindi, in altre parole avere qualcosa di simile:

<script src="https://www.paypal.com/sdk/js?client-id=your_id&vault=true&currency=USD"></script>

Dove your_id è il valore che si desidera modificare dinamicamente.

Per raggiungere questo obiettivo è necessario:

Creare il file yourmodule.module

Il solito, è necessario un modulo personalizzato, con il file .module, come da documentazione ufficiale:

https://www.drupal.org/docs/8/creating-custom-modules/basic-structure

È necessario implementare:

/**
 : implementa hook_js_alter().
 */

E, ecco che arriva la parte interessante:

<? php

utilizzare Drupal, Core, Asset, AttachedAssetsInterface;

/**
 @file di lavoro
 Il file del modulo.
 */

/**
 : implementa hook_js_alter().
 */
funzione yourmodule_js_alter(&$javascript, AttachedAssetsInterface $assets)
    qui è possibile chiamare questo per ottenere le impostazioni personalizzate
    $config: Drupal::config('MY.settings');
    if(!empty($config->get('client_id')) &amp; !empty($config->get('secret'))
        $client_id - $config->get('client_id');
    Qui si sostituisce l'URL predefinito con quello che si desidera (inclusi i parametri necessari, nel mio caso il client
        $javascrip['https://www.paypal.com/sdk/js?client-id=CLIENT_ID&vault=true¤cy=USD']['data']t " "https://www.paypal.com/sdk/js?client-id&$client_id&amp;true&gt;usd";
    }
    _webform_asset_alter($javascript, 'javascript');
}

In quest'ultimo blocco di codice si può vedere che abbiamo completamente eseguire l'override dell'URL della libreria javascript, anche se vogliamo solo aggiungere / modificare i parametri.

Da notare che è necessario includere anche quanto segue includono:

utilizzare Drupal, Core, Asset, AttachedAssetsInterface;

Nel mio caso ho dovuto chiamare anche la funzione _webform_asset_alter, ma la mia ipotesi è che è necessario solo nel mio caso specifico come sto integrando in un webform.

Questo è tutto, non spiegherò come si aggiunge una libreria come è già documentato (vedi il mio primo link alla documentazione ufficiale).

Posted in Sviluppo web.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.