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 y our_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 anch e la funzione _webfor m_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).

Pubblicato in Sviluppo web.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

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