Страница 1 из 2

Закрытие меню по клику вне элемента

Добавлено: 15.02.2018, 12:34
kr_luch
Уважаемые разработчики, просим вас написать решение как закрывать меню в дефолтном шаблоне (и во многих ваших других шаблонах) по клику вне элемента. Сейчас оно закрывается только по клику на кнопку "Каталог". Как вообще упустили этот "дефект" и сразу не сделали по-человечески...

Добавлено: 22.02.2018, 13:35
kr_luch
Так что там, Okay Cms, напишите или нет? Там же делов на 5 минут. Я мог бы сам исправить, но ведь это недоработка с вашей стороны.

Добавлено: 22.02.2018, 14:16
OkayCMS
kr_luch писал(а):Так что там, Okay Cms, напишите или нет? Там же делов на 5 минут. Я мог бы сам исправить, но ведь это недоработка с вашей стороны.
Мы не считаем это не доработкой. Нам кажется что так правильно.

Добавлено: 23.02.2018, 08:45
kr_luch
OkayCMS писал(а):Нам кажется что так правильно
То, что вам кажется - лично ваше дело. Надо заботится о пользователях, которым неудобно и большинству не понятно как закрыть это меню. Народ привык уже, что меню закроется, когда курсор покинет блок с меню. Зачем покупателю искать способ закрыть меню? Ему проще закрыть страницу и пойти в другой магазин, где не надо думать.

Добавлено: 23.02.2018, 09:01
OkayCMS
kr_luch писал(а):
OkayCMS писал(а):Нам кажется что так правильно
То, что вам кажется - лично ваше дело. Надо заботится о пользователях, которым неудобно и большинству не понятно как закрыть это меню. Народ привык уже, что меню закроется, когда курсор покинет блок с меню. Зачем покупателю искать способ закрыть меню? Ему проще закрыть страницу и пойти в другой магазин, где не надо думать.
Если вы считаете что это нужно переделать - вы можете это переделать. У нас открытый исходный код.

Добавлено: 23.02.2018, 09:49
kr_luch
OkayCMS писал(а):вы можете это переделать
Мдааа...бросили в массу открытый исходный код и делайте что хотите. "Далеко" вы пойдете с таким подходом.

Добавлено: 23.02.2018, 11:24
OkayCMS
kr_luch писал(а):
OkayCMS писал(а):вы можете это переделать
Мдааа...бросили в массу открытый исходный код и делайте что хотите. "Далеко" вы пойдете с таким подходом.
А вы хотите что-бы мы бесплатный код ещё и бесплатно поддерживали вне очереди, вне развития системы, по любому вашему требованию?
Изображение

Добавлено: 23.02.2018, 14:18
kr_luch
OkayCMS писал(а):А вы хотите что-бы мы бесплатный код ещё
Мы хотим чтобы вы довели до ума хотя бы дефолтные функции. У вас куча багов даже на дефолтном шаблоне. Предлагаете пакетное решение по открытию интернет-магазина за n-сумму, но чтобы в нем не было багов - предлагаете обратится к разработчикам для их устранения....Это как так?

Трудно сделать сразу адаптивное меню или ограничить кол-во категорий?

Добавлено: 24.02.2018, 14:01
Master
Лично мне больше нравится меню по клику, именно так как сделано в ОкаyCMS, а меню по наведению наоборот очень сильно раздражает, особенно когда оно выскакивает когда совсем не надо, при случайном движении мышкой.

Добавлено: 24.02.2018, 19:16
makki
Master писал(а):Лично мне больше нравится меню по клику, именно так как сделано в ОкаyCMS, а меню по наведению наоборот очень сильно раздражает, особенно когда оно выскакивает когда совсем не надо, при случайном движении мышкой.
Речь идет о том, чтобы уже открытое меню автоматически закрывалось при КЛИКЕ вне меню.

Тоже считаю, что такое поведение более комфортно для пользователя и давно хотел у себя исправить, но никак не доходили руки.
Выкладываю решение. Меню закрывается также на мобильных устройствах с тачскрином.
1) В файле design/ваш_шаблон/html/index.tpl
1.1) в строке

Код: Выделить всё

<div class="categories">

добавляем класс fn_bind, чтобы получилось

Код: Выделить всё

<div class="categories fn_bind">

1.2) Чуть ниже в строке

Код: Выделить всё

<div class="categories_heading fn_switch">

поменяем fn_switch на fn_catalog, чтобы получилось

Код: Выделить всё

<div class="categories_heading fn_catalog">


2) В файле design/ваш_шаблон/js/okay.js
в секции /* Document ready */ например после

Код: Выделить всё

$('.fn_switch').click(function(e){ ......... }

добавим

Код: Выделить всё

    // Каталог
    $('.fn_catalog').click(function(e){
        e.preventDefault();

        if ($(this).hasClass('active')) {
            $(this).removeClass('active');
            $(this).next().slideUp(300);
            $(document).off('mouseup.fn_bind touchend.fn_bind');
        }
        else {
            $(this).addClass('active');
            $(this).next().slideDown(300);
            $(document).on('mouseup.fn_bind touchend.fn_bind',function (e){
                var container = $('.fn_bind');
                if (!container.is(e.target) && container.has(e.target).length === 0) {
                    $('.fn_catalog').removeClass('active');
                    $('.fn_catalog').next().slideUp(300);
                    $(document).off('mouseup.fn_bind touchend.fn_bind');
                }
            });
        }
    });


3) Перед проверкой почистите кэш браузера

Добавлено: 25.03.2018, 15:56
pikasso
makki писал(а):// Каталог..................
Огромное вам мерси.
А можете подсказать точно это но на оборот..
Что бы человек заходил на сайт...а выпадающее меню было открыто...и при нажатии в любом месте оно закрывалось...уж повелось так что 50% заходящих...не могут понять что меню открывается нажатием на вертикальные черточки или название "Каталог"

Добавлено: 26.03.2018, 13:23
makki
pikasso писал(а):
makki писал(а):// Каталог..................
Огромное вам мерси.
А можете подсказать точно это но на оборот..
Что бы человек заходил на сайт...а выпадающее меню было открыто...и при нажатии в любом месте оно закрывалось...уж повелось так что 50% заходящих...не могут понять что меню открывается нажатием на вертикальные черточки или название "Каталог"
Сейчас не за рабочим компьютером. Но по-моему достаточно будет
1) в index.tpl в строке

Код: Выделить всё

<div class="categories_heading fn_switch">

добавить класс active чтобы получилось так

Код: Выделить всё

<div class="categories_heading fn_switch active">

2) В стилях style.css
в классе .categories_nav убрать display: none;

Добавлено: 28.03.2018, 00:26
Inclinatio
makki писал(а):Сейчас не за рабочим компьютером. Но по-моему достаточно будет.........
Подскажите пожалуйста, а как сделать чтобы на главной странице меню оставалось всегда открытым, а на других страницах (каталог, товар и т.д) вызывалось стандартно т.е по клику?

Добавлено: 28.03.2018, 10:03
makki
Inclinatio писал(а):
makki писал(а):Сейчас не за рабочим компьютером. Но по-моему достаточно будет.........
Подскажите пожалуйста, а как сделать чтобы на главной странице меню оставалось всегда открытым, а на других страницах (каталог, товар и т.д) вызывалось стандартно т.е по клику?
Вместо того, что указано выше,
В файле design/ваш_шаблон/html/scripts.tpl
добавьте такой код:

Код: Выделить всё

    {if $smarty.get.module == 'MainView'}
        $(".categories_heading").addClass('active');
        $(".categories_nav").show();
    {/if}

Добавлено: 28.03.2018, 17:15
Inclinatio
makki писал(а):Вместо того, что указано выше,
В файле design/ваш_шаблон/html/scripts.tpl
добавьте такой код:

Спасибо огромное, помогли!

Добавлено: 25.04.2018, 12:24
makki
Здесь есть решение как сделать закрытие и открытие меню по наведении мышки

Добавлено: 08.01.2019, 13:29
fauran
makki, а подскажи пожалуйста, все работает, а как сделать чтоб MainView актив срабатывал на мониторах,а на мобильной версии нет?

Добавлено: 30.07.2019, 16:44
Nick52
Добрый день!
Как сделать затемнение фона при открытие каталога?
ЛОЛ =D
решил проблему крайне тупо, может ещё кому пригодится
в класс

Код: Выделить всё

.categories_nav

добавил свойство

Код: Выделить всё

box-shadow: rgba(0, 0, 0, 0.3) 0px 0px 0px 9999px;

Добавлено: 30.09.2020, 12:46
Family Mall
makki писал(а):
Master писал(а):Лично мне больше нравится меню по клику, именно так как сделано в ОкаyCMS, а меню по наведению наоборот очень сильно раздражает, особенно когда оно выскакивает когда совсем не надо, при случайном движении мышкой.
Речь идет о том, чтобы уже открытое меню автоматически закрывалось при КЛИКЕ вне меню.

Тоже считаю, что такое поведение более комфортно для пользователя и давно хотел у себя исправить, но никак не доходили руки.
Выкладываю решение. Меню закрывается также на мобильных устройствах с тачскрином.
1) В файле design/ваш_шаблон/html/index.tpl
1.1) в строке

Код: Выделить всё

<div class="categories">

добавляем класс fn_bind, чтобы получилось

Код: Выделить всё

<div class="categories fn_bind">

1.2) Чуть ниже в строке

Код: Выделить всё

<div class="categories_heading fn_switch">

поменяем fn_switch на fn_catalog, чтобы получилось

Код: Выделить всё

<div class="categories_heading fn_catalog">


2) В файле design/ваш_шаблон/js/okay.js
в секции /* Document ready */ например после

Код: Выделить всё

$('.fn_switch').click(function(e){ ......... }

добавим

Код: Выделить всё

    // Каталог
    $('.fn_catalog').click(function(e){
        e.preventDefault();

        if ($(this).hasClass('active')) {
            $(this).removeClass('active');
            $(this).next().slideUp(300);
            $(document).off('mouseup.fn_bind touchend.fn_bind');
        }
        else {
            $(this).addClass('active');
            $(this).next().slideDown(300);
            $(document).on('mouseup.fn_bind touchend.fn_bind',function (e){
                var container = $('.fn_bind');
                if (!container.is(e.target) && container.has(e.target).length === 0) {
                    $('.fn_catalog').removeClass('active');
                    $('.fn_catalog').next().slideUp(300);
                    $(document).off('mouseup.fn_bind touchend.fn_bind');
                }
            });
        }
    });


3) Перед проверкой почистите кэш браузера

Подскажите, а для v.3.7.1 должно работать?

Добавлено: 30.09.2020, 13:29
makki
Family Mall писал(а):Подскажите, а для v.3.7.1 должно работать?
Тупо перенести на 3-ю версию наверное не получится. Можно сделать по такому же принципу.