Добрый день!
Помогите, пожалуйста, найти решение.
Есть главная страница с картинками, созданная на views. Посетителю сайта на определенной странице добавляется в cookie значение. Как сделать, чтобы на главной странице проверялось наличие этой куки? И чтобы картинки на этой странице выводились в соответствии с этим значением.
Я так понимаю, нужно в sql-запрос views добавить условие проверки куки? Как это сделать? Или может есть другие варианты? Подскажите, пожалуйста.
Комментарии
см. modules/user/user.module
... $form['#attached']['library'][] = array('system', 'jquery.cookie'); ...
http://florange-konsultant.ru/nizhnee-bele-komfort/nabila - javascript + cookie -- перключается режим сеткой/строками. Точно так же
Кусок из CSS:
clear: both;
float: left;
width: 100%;
}
.kletkoi .variants .views-row { /*клеткой*/
clear: none;
float: left;
width: 33.33%;
}
JS:
Drupal.behaviors.underwearTheme = {
attach: function(context, settings) {
function setMyCookie() {
myCookieVal = $('.t-content').hasClass('kletkoi') ? 'isActive' : 'notActive';
$.cookie('myCookieName', myCookieVal, { path: '/' });
}
if ($.cookie('myCookieName') == 'isActive') {
$('.t-content').addClass('kletkoi');
} else {
$('.t-content').removeClass('kletkoi');
}
$(".t-kletkoi").click(function(){
$(".t-content").toggleClass("kletkoi",true);
$(".t-content").toggleClass("strokami",false);
setMyCookie();
});
$(".t-strokami").click(function(){
$(".t-content").toggleClass("kletkoi",false);
$(".t-content").toggleClass("strokami",true);
setMyCookie();
});
}
};
думаю так же можно и картинку
Большое вам спасибо, что предложили помощь!
VasyOK, к сожалению ваше решение не подошло. Дело в том, что на странице есть pager и сортировка. И если выбрать отображение картинок только с определенным параметром, для примера возьмем размер картинок, то должны выводятся только изображения, соответствующие этому размеру. Можно, конечно, скрыть скриптом изображения других размеров, но тогда будут появляться пустые страницы пагинации. Думаю, в этом случае, нужно использовать sql-запросы в базу данных, чтобы pager сразу выводил только то, что нужно.
sas@drupal.org, потратив несколько часов я так и не понял, как использовать modules/user/user.module в данном случае.
Но все равно большое вам спасибо, что отозвались на просьбу о помощи!
Решил проблему так:
Отключил представления и создал те же страницы через hook_menu. В запрос:
...
добавил эти строки:
$query->innerJoin('field_data_field_sizes', 'sizes', 'sizes.entity_id = n.nid');
$query->condition("sizes.field_sizes_value", $_COOKIE['sizes_sort']);
}
Вопрос, частично, решился и на страницах, созданных через хук все заработало, как надо. Плюс это дало определенную гибкость в настройках фильтров. Но есть несколько страниц таксономии, на которых тоже должны действовать cookie. Для этого я внес такие же изменения в файл /modules/taxonomy/taxonomy.module
IF (isset($_COOKIE['sizes_sort'])) {
$query->innerJoin('field_data_field_sizes', 'sizes', 'sizes.entity_id = t.nid');
$query->condition("sizes.field_sizes_value", $_COOKIE['sizes_sort']);
}
Единственная проблема такого подхода, при обновлении Drupal нужно будет снова прописывать этот код в /modules/taxonomy/taxonomy.module
Если знаете решение лучше - поделитесь, пожалуйста, им здесь. Буду благодарен!