xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Работа с cookie из Javascript

Опубликовано в

В ядро семёрки входит небольшой jQuery плагин — Cookie plugin 1.0, с помощью которого можно из javascript добавлять, изменять и удалять куки.

Перед тем как использовать плагин, его нужно подключить одним из двух способов:

// способ подключения в конструкторе формы
$form['#attached']['library'][] = array('system', 'jquery.cookie');
 
// общий способ подключения
drupal_add_library('system', 'jquery.cookie');

После этого в js станет доступна ф-я $.cookie:

var myCookie = $.cookie('myCookie'); // получение значения куки myCookie
$.cookie('myCookie', 'some val');    // установка значения куки myCookie
$.cookie('myCookie', null);          // удаление куки myCookie

Пример установки куки с дополнительными параметрами:

$.cookie('myCookie', 'some val', {
  path: Drupal.settings.basePath,
  expires: 365
});

Подробнее.

Написанное актуально для Drupal 7
Похожие записи

Комментарии RSS

Ни одного коммента...((( Оставлю первый.
Плагин нужный, удобный. Жаль что я только что о нём узнал. Нужно было как то сохранить для юзера фразу по которой пришел. Куки - самое удобное место. Я пытался как то через сессию(php) - но это даже для зарегиных не правильно работает, видимо мешает кеширование.
Надо внимательней изучать папку: /misc...)))

// установка значения куки myCookie - так правильнее
// если не указать path: '/' - печенюга исчезает при переходе на, например /node/add/page
$.cookie('myCookie', 'some val', {expires: 1, path: '/'});

Ещё пример как можно использовать:
if($.cookie('DRUPAL_UID')) {
  alert('Ваш DRUPAL_UID: "' + $.cookie('DRUPAL_UID') + '"');
}
else {
  alert('Вы аноним.');  
}

Теперь у меня появилось желание составить свой список, а то он пока что только в голове: "Самые используемые плагины jQuery".
Подобное раньше изучал - кто какие модули drupal использует.

Опять здесь только я пишу...)))
Как получить куку во вьюсе?
Например сделать представление для анонимов: Вы это смотрели или Вы это хотите сравнить...
И по сложнее: если включено разное кеширование, модуль Boost...

контекстный фильтр по nid - return $nids_from_cookie;

Если пропустить аргумент - expires, срок действия cookie истечет с окончанием сессии (при закрытии броузера).

$.cookie('myCookie', 'some val', {path: '/'});

как в $.cookie положить title страницы а на нужной странице достать title страницы с которой пришел пользователь?

Ну это же элементарно, ватсон.

if( !$.cookie('titleEnter') ) $.cookie('titleEnter', $('title'), {path: '/'});

а это работает по сей день?

drupal 8 пока вроде не вышел

написано актуально для 7ки, но че то не пашет

Что не пашет? Трактор на поле?
Пишите конкретно и как можно подробнее. Что делали, куда вставили, что должно получиться... Здесь ванг нету...)))

в preprocess_page(); подключаю drupal_add_library('system', 'jquery.cookie'); в js файле пишу $.cookie('myCookie', 'some val'); в консоле дает ошибку неизвестная функция - $.cookie

1. Проверить - подключился ли файл - отключить агрегацию js - найти подключенный файл в - найти файл физически на сервере - /misc/jquery.cookie.js

Кстати, стоит поставить jquery_update - там он обновляется тоже - /sites/all/modules/jquery_update/replace/ui/external/jquery.cookie.js

А вы в js файле обернули функцию - чтобы доллар использовать?
2. В Drupal 7 нужно дополнительно обернуть код в:
(function($) {
...
}(jQuery));

3. Я подключаю в своей теме в template.php

function themename_preprocess_html(&$variables) {
  // Add external libraries.
  drupal_add_library('system', 'jquery.cookie');   
}

Хотел сказать, что слишком много кук для домена браузер не разрешит. Обычно это около 20.
Так что лучше использовать массив, но записывать его строкой.
http://javascript.ru/forum/jquery/14048-massiv-v-cookie.html#post85337 - это решение мне показалось удачным.

3. Я подключаю в своей теме в template.php

function themename_preprocess_html(&$variables) {
  // Add external libraries.
  drupal_add_library('system', 'jquery.cookie');   
}

Если подключать так, сайт уходит в циклическую переадресацию, лечится переустановкой global redirect. Непонятно почему...

а как потом эту куку прочитать в php
в js работает
var mail1 = $("#edit-mergevars-email").val();
$.cookie('usermail', mail1);
приложение в браузере куку видит а друпал $mail = $_COOKIE['usermail'];

сорри не дописал друпал не видит

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании