Скрыть пункты меню без потери функционала

Все вопросы/проблемы по установке и использовании.
Ответить
Serdobolniy
Спонсор
Спонсор
Сообщения: 127
Зарегистрирован: 03 мар 2016, 23:01
Имя: Сергей

Скрыть пункты меню без потери функционала

Сообщение Serdobolniy »

Добрый день, как скрыть в главном меню ненужные пользователю пункты (сущности) без потери самого функционала? Если пользователю даётся "просмотр" данных в существующей "сущности", без возможности в ней работать (создавать, удалять...), в главном меню появляется пункт - "название" сущности. Хочется скрыть название сущности в меню, но оставить функционал в самой программе. Через подсущности (которые не отображаются в меню) и компоновку меню - варианты не подходят.
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1196
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Контактная информация:

Re: Скрыть пункты меню без потери функционала

Сообщение Fait »

У меня есть плагин, позволяющий это сделать.
Стандартным функционалом сделать невозможно.
nruslan2
Сообщения: 2435
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow

Re: Скрыть пункты меню без потери функционала

Сообщение nruslan2 »

5 копеек :D : есть и доработка) а если поискать по форуму можно найти как скрывать и стандартными средствами через скрипты(правда надо писать код - никакого клика мышки в настройках)
Serdobolniy
Спонсор
Спонсор
Сообщения: 127
Зарегистрирован: 03 мар 2016, 23:01
Имя: Сергей

Re: Скрыть пункты меню без потери функционала

Сообщение Serdobolniy »

Спасибо за подсказку, нашёл: viewtopic.php?t=7159
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1196
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Контактная информация:

Re: Скрыть пункты меню без потери функционала

Сообщение Fait »

Serdobolniy писал(а): 27 апр 2026, 10:20 Спасибо за подсказку, нашёл: viewtopic.php?t=7159
Да, только тем способом вы не сможете настроить скрытие для конкретных групп пользователей.
То есть пункт меню в итоге скроется вообще для всех.
А также, если выведены подсущности в меню, тем способом вы их тоже не сможете скрыть.
nruslan2
Сообщения: 2435
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow

Re: Скрыть пункты меню без потери функционала

Сообщение nruslan2 »

Можно и под разные группы и даже пользователей
А вот про подсудности не скажу

Поэтому я пользуюсь своей доработкой, чтоб было легко и не принужденно :D :D
Serdobolniy
Спонсор
Спонсор
Сообщения: 127
Зарегистрирован: 03 мар 2016, 23:01
Имя: Сергей

Re: Скрыть пункты меню без потери функционала

Сообщение Serdobolniy »

Fait писал(а): 27 апр 2026, 11:45 Да, только тем способом вы не сможете настроить скрытие для конкретных групп пользователей.
Спасибо, но до "каталога полезных плагинов" мой проект ещё не дорос
nruslan2 писал(а): 27 апр 2026, 14:06 Поэтому я пользуюсь своей доработкой, чтоб было легко и не принужденно
Всем тоже так хочется, мне кажется. Если можно, поделитесь доработкой?
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1196
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Контактная информация:

Re: Скрыть пункты меню без потери функционала

Сообщение Fait »

Serdobolniy писал(а): 27 апр 2026, 15:03 Спасибо, но до "каталога полезных плагинов" мой проект ещё не дорос
Напрасно так думаете, у меня есть как раз есть много действительно полезных и дешёвых (есть также много бесплатных) плагинов с простой установкой в пару кликов.
И есть несколько таких, благодаря которым легче строить саму систему.
Магазин ничему вас не обязывает, просто устанавливаете, и пользуетесь)
Serdobolniy
Спонсор
Спонсор
Сообщения: 127
Зарегистрирован: 03 мар 2016, 23:01
Имя: Сергей

Re: Скрыть пункты меню без потери функционала

Сообщение Serdobolniy »

Переиначил с помощью ИИ найденный код по скрытию меню, сделав его не "мерцающим" при обновлении страницы, и скрываемым у необходимых групп пользователей, убрав не нужную мне сортировку и разрывы.
Serdobolniy писал(а): 27 апр 2026, 10:20 Спасибо за подсказку, нашёл: viewtopic.php?t=7159
Настройка
1. Заходим в "Настройки" => "Пользовательский HTML".
2. Вставляем в поле "Добавьте код в конце тега <head>" следующий код:
3. Пункты меню, группы доступа и вместо: '..........' - замените на своё

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

<style id="hide-menu-style">
    /* Временно скрываем всё меню */
    .page-sidebar-menu > li {
        display: none !important;
    }
</style>

<script>
(function() {
    // Функция для показа меню
    function showMenu() {
        // Удаляем временный стиль, который скрывает всё меню
        const tempStyle = document.getElementById('hide-menu-style');
        if (tempStyle) {
            tempStyle.remove();
        }
        
        // Теперь применяем постоянные правила
        applyMenuRules();
    }
    
    // Функция с правилами скрытия
    function applyMenuRules() {
        // ГРУППЫ С ПОЛНЫМ ДОСТУПОМ (видят всё. Дополните свои группы доступа пользователей)
        const fullAccessGroups = ['admin', 'Администратор', 'Директор', '.....'];
        
        // ПУНКТЫ ДЛЯ СКРЫТИЯ (у остальных групп. Дополните свои пункты меню)
        const hiddenItems = [
            'Настройки',
            'Пользователи',
            'Дополнение',
            'Документация',
            'О программе',
            'Лицензия',
            '..........'
        ];
        
        // СООТВЕТСТВИЕ ID ГРУПП
        const groupsMap = {
            0: 'Администратор',
            1: 'Директор',
            2: 'Заместитель директора',
            3: 'Главный бухгалтер',
            4: 'Отдел ...',
            5:  '..........'
        };
        
        // Определяем группу пользователя
        let userGroupId = 0;
        const bodyClasses = document.body.className.split(' ');
        for (let i = 0; i < bodyClasses.length; i++) {
            const match = bodyClasses[i].match(/page-usergroup-(\d+)/);
            if (match) {
                userGroupId = parseInt(match[1]);
                break;
            }
        }
        
        const userGroupName = groupsMap[userGroupId] || 'user';
        const hasFullAccess = fullAccessGroups.includes(userGroupName);
        
        console.log('Группа пользователя:', userGroupName, 'ID:', userGroupId, 'Полный доступ:', hasFullAccess);
        
        // Применяем правила к меню
        const allItems = document.querySelectorAll('.page-sidebar-menu > li');
        allItems.forEach(function(item) {
            const titleElement = item.querySelector('.title');
            if (titleElement) {
                const titleText = titleElement.innerText.trim();
                
                if (hasFullAccess) {
                    // Полный доступ — показываем всё
                    item.style.display = '';
                } else {
                    // Ограниченный доступ — скрываем запрещённые
                    if (hiddenItems.includes(titleText)) {
                        item.style.display = 'none';
                    } else {
                        item.style.display = '';
                    }
                }
            }
        });
    }
    
    // Ждём загрузки DOM
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', showMenu);
    } else {
        showMenu();
    }
})();
</script>
Ответить