Как передать настройки в JS

mbaev 17.05.2016, 10:01

В друпале существует достаточно простой способ передачи каких-либо настроек из сервер-сайда на фронт-енд, другими словами из PHP в JavaScript.

  1. $settings = array(
  2.     'module_name' => array(
  3.         'my_setting' => variable_get('module_name_my_setting', ''),
  4.     )
  5. );
  6. drupal_add_js($settings, 'setting');

Настройки также будут переданы на клиент по ajax-запросу. Для этого нужно прописать этот код в функцию ajax-callback или, например, в hook_init. Как создать ajax-callback можно подсмотреть в статье Как создать свою ajax-команду.

Теперь можно использовать эти настройки.

  1. (function ($, Drupal) {
  2.   "use strict";
  3.  
  4.   Drupal.behaviors.module_name = {
  5.     attach: function(context, settings) {
  6.       var my_setting = settings.module_name.my_setting;
  7.       console.log(my_setting);
  8.     }
  9.   }
  10. })(jQuery, Drupal);

Здесь есть один нюанс, в переменной settings будут лежать только те настройки, которые были переданы вместе с ответом. Например, если ajax-ответ не возвращает необходимую настройку, то её можно получить по-другому.

  1. var my_setting = Drupal.settings.module_name.my_setting;