Вы здесь

0

Всех приветствую.
Подскажите как можно создать блок "Это Ваш город?". Для уточнения города пользователя. Как реализовано на многих сайтах.
Что сделано:
Список городов реализован через таксономию и Views Global Filter. Значение автоматически выбирается при помощи модуля Smart Ip, если значения нет подставляется дефолтное значение. И все здорово, но надо обратить внимание пользователя на этот блок, так как если город подтянулся неправильно, пользователь будет просматривать не актуальную информацию.
Рядом с блоком выбора расположил блок с текстом и двумя кнопками:

<p>Это ваш город?</p>
<button id="yes" class="btn btn-success btn-sm">ДА</button>
<button id="no" class="btn btn-success btn-warning">НЕТ</button>

Подключил JS:

(function($) {
$(document).ready(function() {
    $('#no').click(function() {
        open($('#edit-field-city'));
        $("#block-block-8").addClass("hide-block");
    });
    $("#yes").click(function(){
    $("#block-block-8").addClass("hide-block");
});
});
function open(elem) {
    if (document.createEvent) {
        var e = document.createEvent("MouseEvents");
        e.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        elem[0].dispatchEvent(e);
    } else if (element.fireEvent) {
        elem[0].fireEvent("onmousedown");
    }
}
}(jQuery));

При нажатии кнопки ДА блок скрывается, если нажать НЕТ он скроется и элемент select откроется, тоже все здорово.
А вот как этот блок больше не отображать для этого пользователя, может в переменную $_SESSION что то записывать, но так и не додумал как, подскажите кто сталкивался!

Версия Drupal: 
7.x
Категория: 
Javascript
Вопрос задан 27.06.2016 - 20:01

Скажите у вас модуль Smart IP нормально определяет город пользователя?
Я уже голову сломал на основе чего сделать выбор города, все существующие модули, судя по отзывам, разной степени корявости.
Может напишете полее подробно как сделали?

Комментарий оставлен 20.07.2016 - 11:22

Со смарт айпи была проблема, на сайте он ничего не определял, пока остановился на модуле geoplugin

Комментарий оставлен 26.07.2016 - 10:13

Я разобрался. SmartIP сам по себе малополезен в России. Я взял дополнительный модуль под него - smartipipgeobasesource здесь http://nikita-petrov.com/drupal/blok-vybora-goroda-na-drupal-sayte-avtom...
Он использует базу IP вот из этого модуля http://www.drupal.ru/node/80960 ,
А вот новая база IP, переконвертировал ее неделю назад - https://yadi.sk/d/r2vmuOuptmSRy
Только перед импортом базы в зависимости от используемого модуля, нужно проверить в какие таблицы ее импортировать.

Комментарий оставлен 05.08.2016 - 07:23

Ответы

2

там где блок, вставьте код (или в template.php или что у вас еще):

drupal_add_library('system', 'jquery.cookie');

в вашем js следующие изменения:

if ($.cookie('mycity_setup') != 1) {
  // show block here
}

$("#yes").click(function(){
    $.cookie('mycity_setup', 1);
    // any other code
});

в css:

#block-block-8 {
  display: none;
}
Ответ дан 28.06.2016 - 05:10