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

- Сообщения: 127
- Зарегистрирован: 03 мар 2016, 23:01
- Имя: Сергей
Скрыть пункты меню без потери функционала
Добрый день, как скрыть в главном меню ненужные пользователю пункты (сущности) без потери самого функционала? Если пользователю даётся "просмотр" данных в существующей "сущности", без возможности в ней работать (создавать, удалять...), в главном меню появляется пункт - "название" сущности. Хочется скрыть название сущности в меню, но оставить функционал в самой программе. Через подсущности (которые не отображаются в меню) и компоновку меню - варианты не подходят.
- Fait
- Инвестор

- Сообщения: 1196
- Зарегистрирован: 19 ноя 2020, 17:46
- Имя: Максим Балакшеев
- Откуда: Россия, Златоуст
- Организация: ИП Балакшеев Максим Георгиевич
- Контактная информация:
Re: Скрыть пункты меню без потери функционала
У меня есть плагин, позволяющий это сделать.
Стандартным функционалом сделать невозможно.
Стандартным функционалом сделать невозможно.
Re: Скрыть пункты меню без потери функционала
5 копеек
: есть и доработка) а если поискать по форуму можно найти как скрывать и стандартными средствами через скрипты(правда надо писать код - никакого клика мышки в настройках)
-
Serdobolniy
- Спонсор

- Сообщения: 127
- Зарегистрирован: 03 мар 2016, 23:01
- Имя: Сергей
Re: Скрыть пункты меню без потери функционала
Спасибо за подсказку, нашёл: viewtopic.php?t=7159
- Fait
- Инвестор

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

А вот про подсудности не скажу
Поэтому я пользуюсь своей доработкой, чтоб было легко и не принужденно
-
Serdobolniy
- Спонсор

- Сообщения: 127
- Зарегистрирован: 03 мар 2016, 23:01
- Имя: Сергей
Re: Скрыть пункты меню без потери функционала
Спасибо, но до "каталога полезных плагинов" мой проект ещё не доросFait писал(а): 27 апр 2026, 11:45 Да, только тем способом вы не сможете настроить скрытие для конкретных групп пользователей.
Всем тоже так хочется, мне кажется. Если можно, поделитесь доработкой?nruslan2 писал(а): 27 апр 2026, 14:06 Поэтому я пользуюсь своей доработкой, чтоб было легко и не принужденно
- Fait
- Инвестор

- Сообщения: 1196
- Зарегистрирован: 19 ноя 2020, 17:46
- Имя: Максим Балакшеев
- Откуда: Россия, Златоуст
- Организация: ИП Балакшеев Максим Георгиевич
- Контактная информация:
Re: Скрыть пункты меню без потери функционала
Напрасно так думаете, у меня есть как раз есть много действительно полезных и дешёвых (есть также много бесплатных) плагинов с простой установкой в пару кликов.Serdobolniy писал(а): 27 апр 2026, 15:03 Спасибо, но до "каталога полезных плагинов" мой проект ещё не дорос
И есть несколько таких, благодаря которым легче строить саму систему.
Магазин ничему вас не обязывает, просто устанавливаете, и пользуетесь)
-
Serdobolniy
- Спонсор

- Сообщения: 127
- Зарегистрирован: 03 мар 2016, 23:01
- Имя: Сергей
Re: Скрыть пункты меню без потери функционала
Переиначил с помощью ИИ найденный код по скрытию меню, сделав его не "мерцающим" при обновлении страницы, и скрываемым у необходимых групп пользователей, убрав не нужную мне сортировку и разрывы.
1. Заходим в "Настройки" => "Пользовательский HTML".
2. Вставляем в поле "Добавьте код в конце тега <head>" следующий код:
3. Пункты меню, группы доступа и вместо: '..........' - замените на своё
Настройка
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>