logo

Дополнительные типы блоков (EBT) — новый опыт конструктора страниц❗

Дополнительные типы блоков (EBT) — стилизованные, настраиваемые типы блоков: слайдшоу, вкладки, карточки, аккордеоны и многие другие. Встроенные настройки для фона, DOM Box, плагины Javascript.

Демо EBT модули Скачать EBT модули

❗Дополнительные типы параграфов (EPT) — новый опыт работы с параграфами

Дополнительные типы параграфов (EPT) — набор модулей, основанный на аналогичных параграфах.

Демо EPT модули Скачать EPT модули

Scroll

Как переписать jQuery Cookie и библиотеку core/js-cookie в Drupal с помощью модуля js_cookie

02/03/2026, by Ivan

Почему это изменение?

  • В Drupal 9 библиотека jQuery Cookie была удалена из ядра и заменена библиотекой js-cookie. В Drupal 9 существовал слой совместимости (core/jquery.cookie), но он был удалён в Drupal 10.
    https://www.drupal.org/node/3104677
  • В Drupal 10.1 библиотека ресурсов core/js-cookie была объявлена устаревшей и запланирована к удалению в Drupal 11, поскольку ядро больше не использовало её. В записи об изменениях рекомендуется переход на внесённый сообществом модуль JS Cookie.
    https://www.drupal.org/node/3322720
    https://www.drupal.org/project/drupal/issues/3296086
  • Внесённый сообществом модуль JS Cookie (drupal/js_cookie) предоставляет определение библиотеки ресурсов для js-cookie, чтобы модули и темы могли продолжать использовать Cookies в Drupal 10 и 11. https://www.drupal.org/project/js_cookie

Обзор пути миграции

1) Drupal 8 → 9: jQuery Cookie → core/js-cookie

Исторический контекст: Drupal 9 заменил jQuery Cookie на js-cookie и предоставил примеры сопоставления кода и библиотек. https://www.drupal.org/node/3104677

# ДО (Drupal 8 / ранний 9)
my_library:
  js:
    js/my_library.js: {}
  dependencies:
    - core/jquery
    - core/jquery.cookie
    - core/drupal

// ДО (API jQuery Cookie)
(($, Drupal) => {
  Drupal.behaviors.myModule = {
    attach: () => {
      $.cookie('cutest', 'red panda');
      const myCookieValue = $.cookie('cutest');
      $.removeCookie('cutest');

      $.cookie.json = true;
      $.cookie('cutest', { animal: 'red panda' });
    },
  };
})(jQuery, Drupal);

После (Drupal 9) вы зависели от core/js-cookie и использовали API Cookies.*: https://www.drupal.org/node/3104677

# ПОСЛЕ (Drupal 9)
my_library:
  js:
    js/my_library.js: {}
  dependencies:
    - core/drupal
    - core/js-cookie

// ПОСЛЕ (Drupal 9, API js-cookie)
((Drupal, Cookies) => {
  Drupal.behaviors.myModule = {
    attach: () => {
      Cookies.set('cutest', 'red panda');
      const myCookieValue = Cookies.get('cutest');
      Cookies.remove('cutest');

      Cookies.set('cutest', JSON.stringify({ animal: 'red panda' }));
      const cutest = JSON.parse(Cookies.get('cutest') || 'null');
    },
  };
})(Drupal, window.Cookies);

2) Drupal 10.1+ и 11: core/js-cookie → js_cookie (внесённый модуль)

Поскольку ядро Drupal объявило core/js-cookie устаревшей в 10.1 и удалило в 11, необходимо заменить её библиотекой модуля JS Cookie: js_cookie/js-cookie. https://www.drupal.org/node/3322720

Composer

composer require drupal/js_cookie

Это устанавливает модуль, который предоставляет библиотеку ресурсов Drupal для оригинального пакета js-cookie. https://www.drupal.org/project/js_cookie

Объявление зависимости модуля/темы (для contrib/кастомных проектов)

# my_module.info.yml (или .info.yml вашей темы)
name: My Module
type: module
core_version_requirement: ^10 || ^11
dependencies:
  - js_cookie:js_cookie

На странице проекта указано, что для модулей contrib следует явно добавлять js_cookie:js_cookie как зависимость (и добавлять drupal/js_cookie в composer, если у модуля есть собственный composer.json). [4]

Переключение зависимости библиотеки ресурсов

# Замените это (устарело в 10.1, удалено в 11)
# - core/js-cookie

# Этим (предоставлено contrib-модулем)
my_library:
  js:
    js/my_library.js: {}
  dependencies:
    - core/drupal
    - js_cookie/js-cookie

Именно такая замена рекомендована в официальной записи изменений ядра. [2]

JavaScript код

Ваш JS-код не требует изменений, если вы уже использовали API Cookies из js-cookie — меняется только зависимость библиотеки. [2]

((Drupal, Cookies) => {
  Drupal.behaviors.myModule = {
    attach: () => {
      // Установить cookie.
      Cookies.set('cutest', 'red panda', { path: '/', sameSite: 'Lax' });

      // Получить cookie.
      const myCookieValue = Cookies.get('cutest');

      // Удалить cookie.
      Cookies.remove('cutest', { path: '/' });

      // Сохранить/получить JSON безопасно.
      Cookies.set('cutest', JSON.stringify({ animal: 'red panda' }));
      const cutestRaw = Cookies.get('cutest');
      const cutest = cutestRaw ? JSON.parse(cutestRaw) : null;
    },
  };
})(Drupal, window.Cookies);

Совет: js-cookie соответствует стандарту RFC 6265 и кодирует данные иначе, чем старая jQuery Cookie, особенно для JSON. В записи изменений Drupal 9 описаны эти различия. https://www.drupal.org/node/3104677

Примеры из экосистемы