logo

Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, 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-ը հեռացվել է core-ից և փոխարինվել js-cookie գրադարանով։ Drupal 9-ի ընթացքում գոյություն ուներ հետհամատեղելիության շիմ (core/jquery.cookie), բայց այն հեռացվել է Drupal 10-ի համար։
    https://www.drupal.org/node/3104677
  • Drupal 10.1-ում core/js-cookie asset գրադարանը հայտարարվեց հնացած և նախատեսվեց հեռացվել Drupal 11-ում, քանի որ core-ը այլևս չէր օգտագործում այն։ Փոփոխությունների գրառումը առաջարկում է անցում կատարել contrib-ի կողմից տրամադրված JS Cookie մոդուլին։
    https://www.drupal.org/node/3322720
    https://www.drupal.org/project/drupal/issues/3296086
  • Contrib JS Cookie մոդուլը (drupal/js_cookie) ապահովում է js-cookie գրադարանի asset library սահմանում, որպեսզի module-ները/թեմաները շարունակեն օգտվել 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

// ՄԻՆՉԵՎ (jQuery Cookie API)
(($, 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-ից և օգտագործում էիք Cookies.* API-ն։ https://www.drupal.org/node/3104677

# ՀԵՏՈ (Drupal 9)
my_library:
  js:
    js/my_library.js: {}
  dependencies:
    - core/drupal
    - core/js-cookie

// ՀԵՏՈ (Drupal 9, js-cookie API)
((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 → contrib js_cookie

Քանի որ Drupal core-ը 10.1-ում հնացած է հայտարարել core/js-cookie-ը և հեռացրել այն 11-ում, դուք պետք է այն փոխարինեք contrib JS Cookie մոդուլի գրադարանով՝ js_cookie/js-cookie։ https://www.drupal.org/node/3322720

Composer

composer require drupal/js_cookie

Սա տեղադրում է մոդուլը, որը մատչելի է դարձնում Drupal-ի asset գրադարանը՝ վերին մակարդակի js-cookie փաթեթի համար։ https://www.drupal.org/project/js_cookie

Մոդուլի/թեմայի կախվածության հայտարարում (contrib/custom նախագծերի համար)

# 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]

Փոխել ձեր asset գրադարանի կախվածությունը

# Փոխարինեք սա (հնացած 10.1-ում, հեռացված 11-ում)
# - core/js-cookie

# Ասվածով (տրամադրված contrib մոդուլի կողմից)
my_library:
  js:
    js/my_library.js: {}
  dependencies:
    - core/drupal
    - js_cookie/js-cookie

Այս ճշգրիտ փոխարինումը առաջարկվում է deprecation-ի մասին core change record-ում։ [2]

JavaScript կոդ

Ձեր JS կոդը չի պահանջում որևէ փոփոխություն, եթե արդեն օգտագործել եք Cookies API-ն 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-ին և արժեքները encode է անում այլ կերպ, քան հին jQuery Cookie-ը, հատկապես JSON-ի դեպքում։ Drupal 9-ի փոփոխության գրառումը նկարագրում է այս տարբերությունները։ https://www.drupal.org/node/3104677

Օրինակներ էկոհամակարգից

  • EU Cookie Compliance մոդուլը հետևել է core/js-cookie-ի հնացմանը և առաջարկել է փոխել այն js_cookie/js-cookie-ով։ https://www.drupal.org/project/eu_cookie_compliance/issues/3380490
  • Տարբեր contrib նախագծեր ստեղծել են issue-ներ՝ jQuery Cookie-ը js-cookie-ով փոխարինելու և հետագայում core/js-cookie-ի հնացման հարցերը լուծելու համար։ https://www.drupal.org/project/quicktabs/issues/3298649
    https://www.drupal.org/project/fpa/issues/3505122

Քայլ առ քայլ թարմացման ցուցումներ

A) jQuery Cookie-ից անմիջապես դեպի js_cookie/js-cookie (Drupal 10+)

  1. Հեռացրեք core/jquery և core/jquery.cookie կախվածությունները ձեր .libraries.yml ֆայլից։ https://www.drupal.org/node/3104677
  2. Ավելացրեք js_cookie:js_cookie ձեր .info.yml կախվածություններին (contrib/custom մոդուլների և թեմաների համար)։ https://www.drupal.org/project/js_cookie
  3. Փոխեք գրադարանի կախվածությունը՝ օգտագործելով js_cookie/js-cookie։ https://www.drupal.org/project/js_cookie
  4. Վերագրեք ձեր JS-ը $.cookie-ից դեպի Cookies.*, ինչպես ցույց է տրված վերևում։ https://www.drupal.org/node/3104677

B) core/js-cookie-ից դեպի js_cookie/js-cookie (Drupal 10.1 → 11)

  1. Տեղադրեք մոդուլը՝ composer require drupal/js_cookie։ https://www.drupal.org/project/js_cookie
  2. (Contrib) Ավելացրեք js_cookie:js_cookie ձեր .info.yml-ում։ Պարզապես ակտիվացրեք մոդուլը։ https://www.drupal.org/project/js_cookie
  3. Ձեր .libraries.yml-ում փոխարինեք core/js-cookie-ը՝ js_cookie/js-cookie-ով։ https://www.drupal.org/node/3322720
  4. Պահպանեք ձեր գոյություն ունեցող Cookies.* JS կոդը։ Ֆունկցիոնալ փոփոխություններ պետք չեն։ https://www.drupal.org/node/3322720

Կարևոր նկատառումներ և լավագույն փորձեր

  • Drupal 11-ի պատրաստվածություն: core/js-cookie-ը հեռացվել է Drupal 11-ում — համոզվեք, որ բոլոր կախվածությունները ուղղված են js_cookie/js-cookie-ին։ https://www.drupal.org/node/3322720
  • Գաղտնիություն/CDN: js_cookie նախագծի էջում նկարագրված է, թե ինչպես խուսափել js-cookie-ին CDN-ից բեռնելուց (տվյալների պաշտպանություն)։ Նախընտրելի է տեղային asset-ներ օգտագործել։ https://www.drupal.org/project/js_cookie
  • Էնքոդավորում և JSON: Մի հույս դրեք JSON-ի անուղղակի վարքի վրա։ Օգտագործեք JSON.stringify և JSON.parse՝ ինչպես ցույց է տրված վերևում։ https://www.drupal.org/node/3104677
  • Իրական նախագծային օրինակներ: Դիտարկեք issue queue-ները (օր.՝ EU Cookie Compliance)՝ թարմացման օրինակները տեսնելու համար։ https://www.drupal.org/project/eu_cookie_compliance/issues/3380490