Скрыть поле группа

InstantCMS 2.X

Как скрыть поле группа определенной категории пользователей?

#1 2 февраля 2026 в 08:39

Всем привет, постараюсь описать ситуацию...
— Посты(блоги) разрешено создавать в группах
— имеется возможность добавления постов всем пользователям...
— доступ к созданию групп и добавлению постов в группы есть только у определенной категории пользователей (к примеру «компании»)

Но если обычный пользователь, находящийся не в категории пользователей( а в компании) вступает в любые группы, то при добавлении статей, ему показывается поле, в какую группу публиковать запись(во сколько групп вступил, столько там и будет). 
Хотя настройками приватности в самих группах все равно создание контента обычным пользователям запрещено...

Соответственно вопрос. Как убрать эту строку с выбором групп для обычных пользователей? И разрешить показывать только определенной категории пользователей(компании)??

Изображение

Если человек не вступил ни в одну группу, это поле не показывается... 
Надеюсь понятно объяснил)))

#2 3 февраля 2026 в 15:07

up!

#3 3 февраля 2026 в 15:19

Если коротко, требует правки системных файлов, если через хук, то требует время.

А так в файле \system\controllers\groups\hooks\content_item_form_context.php в строку 49 добавить

  1. if (!$groups_list){ return $data; }
#4 3 февраля 2026 в 15:38
Если коротко, требует правки системных файлов, если через хук, то требует время. А так в файле \system\controllers\groups\hooks\content_item_form_context.php в строку 49 добавить if (!
My-InstantCMS.Ru

Спасибо за ответ, добавил, но ничего не произошло( строка так и показывается. Вы написали что требует время, не совсем понял. Нужно подождать, и только потом заработает?

#5 3 февраля 2026 в 16:29

Может не сохранили?
Требует время если сделать без правки системных файлов, т.е. доработка, создание хука, который перехватывает этот хук и убирает если нет групп

#6 3 февраля 2026 в 16:44

Может не сохранили?

My-InstantCMS.Ru

Сохранил, перепроверил несколько раз( не работает(

Изображение

#7 3 февраля 2026 в 18:07

Щас проверил, даже без моей доработки, если у пользователя нет групп, поле не показывается. 

Потом выше прочитал, что вам надо скрыть для определенных групп, тогда строку заменить на

  1. $user_groups = ($action == 'add') ? $this->cms_user->groups : $item['user_groups'];
  2. $is_company = cmsUser::isUserInGroups($user_groups, [ID_ГРУПП_ЮЗЕРОВ_КОМПАНИЯ]);
  3. if (!$is_company){ return $data; }

ID_ГРУПП_ЮЗЕРОВ_КОМПАНИЯ — вставить ID группы, не группа как сообщество, а как роли пользователей 

#8 3 февраля 2026 в 19:47
Щас проверил, даже без моей доработки, если у пользователя нет групп, поле не показывается.
My-InstantCMS.Ru

Большое спасибо!))) Так все работает, очень помогли честно)

А не подскажите еще, теперь этой категории юзеров(компании) это поле видно, но можно еще сделать так, чтобы в нем отображалась только одна группа, которую он создал… а не все группы, на которые он подписан?

К примеру:

  • Если человек из категории (компания) создал свою группу, то при публикации записи он просто выбирает ее и публикует. Так и должно быть...
  • Если человек из категории (компания) не состоит в группах, то поле Группы для него не показывается. Тут тоже все хорошо, так и должно быть...
  • Но если человек из категории (компания) создал свою группу, но так же подписан еще к примеру на 50 групп, то при публикации в этом поле Группы ему предлагается выбрать в какую группу публиковать… Как сделать так, чтобы в этом поле он видел только одну свою группу, которую он создал, а другие группы не было видно? (так как публикация на сайте в чужих группах и так запрещена и не имеет смысла выводить весь список для выбора группы). Вобщем чтобы только владелец группы видел свою одну группу)) 😃
#9 4 февраля 2026 в 20:21

Потом выше прочитал, что вам надо скрыть для определенных групп, тогда строку заменить на

My-InstantCMS.Ru

Вобщем все прекрасно работало, но сейчас заметил что выдает ошибку… Не знаю почему и как так получилось… Если убрать тот код, который вы написали, то ошибка пропадает.

  1. Fatal error: Uncaught TypeError: in_array(): Argument #2 ($haystack) must be of type array, string given in C:\OSPanel\home\invclub.ru\system\core\user.php:783 Stack trace: #0 C:\OSPanel\home\invclub.ru\system\core\user.php(783): in_array('5', '---\n- "6"\n') #1 C:\OSPanel\home\invclub.ru\system\controllers\groups\hooks\content_item_form_context.php(51): cmsUser::isUserInGroups('---\n- "6"\n', Array) #2 C:\OSPanel\home\invclub.ru\system\core\controller.php(761): onGroupsContentItemFormContext->run(Array) #3 C:\OSPanel\home\invclub.ru\system\core\controller.php(720): cmsController->runExternalHook('content_item_form_context', Array) #4 C:\OSPanel\home\invclub.ru\system\core\eventsmanager.php(142): cmsController->runHook('content_item_form_context', Array) #5 C:\OSPanel\home\invclub.ru\system\core\eventsmanager.php(61): cmsEventsManager::runHook('groups', 'content_item_form_context', Array, Object(cmsRequest)) #6 C:\OSPanel\home\invclub.ru\system\controllers\content\frontend.php(1054): cmsEventsManager::hook('content_item_form_context', Array, NULL, Object(cmsRequest)) #7 C:\OSPanel\home\invclub.ru\system\core\action.php(74): content->getItemForm(Array, Array, 'edit', Array, 13, Array) #8 C:\OSPanel\home\invclub.ru\system\controllers\content\actions\item_edit.php(111): cmsAction->__call('getItemForm', Array) #9 C:\OSPanel\home\invclub.ru\system\core\controller.php(621): actionContentItemEdit->run() #10 C:\OSPanel\home\invclub.ru\system\core\controller.php(481): cmsController->runExternalAction('item_edit', Array) #11 C:\OSPanel\home\invclub.ru\system\core\frontend.php(18): cmsController->executeAction('item_edit', Array) #12 C:\OSPanel\home\invclub.ru\system\core\controller.php(457): cmsFrontend->executeAction('item_edit', Array) #13 C:\OSPanel\home\invclub.ru\system\controllers\content\frontend.php(29): cmsController->runAction('item_edit') #14 C:\OSPanel\home\invclub.ru\system\core\controller.php(506): content->route('posts/edit/13') #15 C:\OSPanel\home\invclub.ru\system\core\frontend.php(18): cmsController->executeAction('posts', Array) #16 C:\OSPanel\home\invclub.ru\system\core\controller.php(457): cmsFrontend->executeAction('posts', Array) #17 C:\OSPanel\home\invclub.ru\system\core\core.php(1032): cmsController->runAction('posts', Array) #18 C:\OSPanel\home\invclub.ru\system\core\core.php(199): cmsCore->runController() #19 C:\OSPanel\home\invclub.ru\index.php(28): cmsCore->runHttp('/posts/edit/13') #20 {main} thrown in C:\OSPanel\home\invclub.ru\system\core\user.php on line 783
#10 5 февраля 2026 в 21:10

Если кому то поможет, то чтобы заработало нужно заменить строку

  1. $user_groups = ($action == 'add') ? $this->cms_user->groups : cmsModel::yamlToArray($item['user_groups']);

Большое спасибо Парвизу 👍

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.

Похожие темы

[ЕСТЬ РЕШЕНИЕ] Скрыть название поля

Полезное Создана 5 месяцев назад 3 сообщения

Скрыть дату создания группы

Компоненты Создана 2 года назад 3 сообщения

Похожее в блогах

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.