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

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

kr_luch
kr_luch
Репутация: 3
Сообщения: 49
Зарегистрирован: 06.02.2018
С нами: 6 лет 1 месяц

Сообщение #1 kr_luch » 15.02.2018, 12:34

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

kr_luch
kr_luch
Репутация: 3
Сообщения: 49
Зарегистрирован: 06.02.2018
С нами: 6 лет 1 месяц

Сообщение #2 kr_luch » 22.02.2018, 13:35

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

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #3 OkayCMS » 22.02.2018, 14:16

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

kr_luch
kr_luch
Репутация: 3
Сообщения: 49
Зарегистрирован: 06.02.2018
С нами: 6 лет 1 месяц

Сообщение #4 kr_luch » 23.02.2018, 08:45

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

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #5 OkayCMS » 23.02.2018, 09:01

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

kr_luch
kr_luch
Репутация: 3
Сообщения: 49
Зарегистрирован: 06.02.2018
С нами: 6 лет 1 месяц

Сообщение #6 kr_luch » 23.02.2018, 09:49

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

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #7 OkayCMS » 23.02.2018, 11:24

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

kr_luch
kr_luch
Репутация: 3
Сообщения: 49
Зарегистрирован: 06.02.2018
С нами: 6 лет 1 месяц

Сообщение #8 kr_luch » 23.02.2018, 14:18

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

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

Master
Master
Репутация: 28
Сообщения: 84
Зарегистрирован: 25.01.2016
С нами: 8 лет 1 месяц

Сообщение #9 Master » 24.02.2018, 14:01

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

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #10 makki » 24.02.2018, 19:16

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) Перед проверкой почистите кэш браузера
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

pikasso M
pikasso M
Возраст: 45
Репутация: 10
Сообщения: 128
Зарегистрирован: 31.01.2016
С нами: 8 лет 1 месяц

Сообщение #11 pikasso » 25.03.2018, 15:56

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

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #12 makki » 26.03.2018, 13:23

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;
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

Inclinatio
Inclinatio
Репутация: 2
Сообщения: 14
Зарегистрирован: 02.12.2017
С нами: 6 лет 3 месяца

Сообщение #13 Inclinatio » 28.03.2018, 00:26

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

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #14 makki » 28.03.2018, 10:03

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

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

    {if $smarty.get.module == 'MainView'}
        $(".categories_heading").addClass('active');
        $(".categories_nav").show();
    {/if}
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

Inclinatio
Inclinatio
Репутация: 2
Сообщения: 14
Зарегистрирован: 02.12.2017
С нами: 6 лет 3 месяца

Сообщение #15 Inclinatio » 28.03.2018, 17:15

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

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

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #16 makki » 25.04.2018, 12:24

Здесь есть решение как сделать закрытие и открытие меню по наведении мышки
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

fauran
fauran

Сообщение #17 fauran » 08.01.2019, 13:29

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

Nick52 M
Nick52 M
Возраст: 33
Репутация: 1
Сообщения: 12
Зарегистрирован: 30.11.2018
С нами: 5 лет 3 месяца

Сообщение #18 Nick52 » 30.07.2019, 16:44

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

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

.categories_nav

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

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

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

Family Mall
Family Mall
Репутация: 2
Сообщения: 42
Зарегистрирован: 04.08.2017
С нами: 6 лет 7 месяцев

Сообщение #19 Family Mall » 30.09.2020, 12:46

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 должно работать?

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #20 makki » 30.09.2020, 13:29

Family Mall писал(а):Подскажите, а для v.3.7.1 должно работать?
Тупо перенести на 3-ю версию наверное не получится. Можно сделать по такому же принципу.
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)


Название раздела: Полезные решения для OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Полезные решения для OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость