Drupal 8 – añadir biblioteca javascript con parámetros dinámicos

Dang… a veces Drupal realmente te hace sufrir… Pero m
e encanta de todos modos… pobre Drupal, a nadie le gusta porque nadie lo entiende, LOL.

Ok, vamos a ponernos serios, si usted tiene problemas para modificar los parámetros de una biblioteca Javascript adjunta, usted no está solo, vamos a ver cómo hacerlo.

En primer lugar, me refiero a agregar javascript según la documentación oficial:

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

En segundo lugar, lo que me resultaba difícil de hacer era modificar los parámetros dinámicamente, en mi caso era mediante el uso de la configuración de mi mó
dulo. Por lo tanto, en otras palabras tener algo como esto:

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

Donde your_id es el valor que desea cambiar dinámicamente.

Para lograr eso usted necesita:

Cree el archivo yourmodule.module

Lo de costumbre, se necesita un módulo personalizado, con el archivo .module, según la documentación oficial:

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

Usted tiene que implementar el:

/**
 * Implementa hook_js_alter().
 */

Y, aquí viene la parte interesante:

<>

utilizar Drupal-Core-Asset-AttachedAssetsInterface;

/**
 * @file
 * El archivo de módulo.
 */

/**
 * Implementa hook_js_alter().
 */
función yourmodule_js_alter(&$javascript, attachedAssetsInterface $assets)
    aquí se puede llamar a esto para obtener su configuración personalizada
    $config de la página de correo de la página de correo de correo de La página de correo de Correos::config('MY.settings');
    if(!empty($config->get('client_id')) &&gt;empty($config->get('secret'))) ?
        $client_id á $config->get('client_id');
    Aquí se reemplaza la URL predeterminada por la que desea (incluidos los parámetros que necesita, en mi caso el cliente que
        $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&vault-true&currency-USD";
    }
    _webform_asset_alter($javascript, 'javascript');
}

En este último bloque de código se puede ver que anulamos completamente la URL de la biblioteca javascript, incluso si sólo queremos añadir / modificar los parámetros.

Para tener en cuenta que también tiene que incluir lo siguiente:

utilizar Drupal-Core-Asset-AttachedAssetsInterface;

En mi caso tuve que llamar también a la función _webform_asset_alter, pero mi suposición es que sólo es necesario en mi caso específico, ya que lo estoy integrando en un formulario web.

Eso es todo, no voy a explicar cómo se agrega una biblioteca como ya está documentado (ver mi primer enlace a la documentación oficial).

Posted in Desarrollo web.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.