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:
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¤cy=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')) & !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&true>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 _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).