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

Опубликовал Максим Баев, 17 мая 2016, 11:01

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

<?php
$settings = array(
    'module_name' => array(
        'my_setting' => variable_get('module_name_my_setting', ''),
    )
);
drupal_add_js($settings, 'setting');

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

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

(function ($, Drupal) {
  "use strict";

  Drupal.behaviors.module_name = {
    attach: function(context, settings) {
      var my_setting = settings.module_name.my_setting;
      console.log(my_setting);
    }
  }
})(jQuery, Drupal);

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

var my_setting = Drupal.settings.module_name.my_setting;

Другие посты