Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как скрыть некоторые доп поля в админке для указанных групп?

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


     05.02.2026    Все вопросы » Общие вопросы по PHP    208

вопрос
Подскажите как можно скрыть несколько доп полей в админке при редактировании и добавлении новостей?
Группы 2,3 не должно видеть доп поля с названием - prem_2 и prem_3

Нашел в интернете такой код он для добавления с сайта. Пытался встроить его в админку не вышло (


<script type="text/jаvascript">
$(document).ready(function() {
    if( dle_group != 1 ) {
        $('#xfield_holder_panel').hide(); 
    }
});
</script>


dle_group != 1- id группы которой доступно поле
$('#xfield_holder_panel').hide(); - Название поля

Ответа пока нет


12 комментариев

SX2
Эксперт

SX2 - 6 февраля 2026 01:53 -

foreach ($r_fields as $value) {
    if (isset($xfields['fields'][$value['name']])) {

        if (in_array($member_id['user_group'], [2, 3]) && $value['name'] == "holder_panel") 
            continue;

        $xf_root[] = $xfields['fields'][$value['name']];
    }
}

Самая сложная часть работы – решиться приступить к ней.

Kentavr
Юзер

Kentavr - 6 февраля 2026 15:20 -

Я правильно понял в трех местах в данном коде вместо name указать имя своего доп поля которое нужно скрыть?

И еще момент после какого когда вставить данный код в админских файлах addnews и editnews ??

SX2
Эксперт

SX2 - 6 февраля 2026 17:19 -

Нет. В данном пример имя поле это: holder_panel

Править цикл нужно.
В addnews 49. в editnews 1028 строки.

Самая сложная часть работы – решиться приступить к ней.

Kentavr
Юзер

Kentavr - 6 февраля 2026 17:36 -

До поле poster нужно скрыть.

Если вставляю такой код, то никаких изменений.

foreach ($r_fields as $value) {
    if (isset($xfields['fields'][$value['name']])) {

        if (in_array($member_id['user_group'], [2, 3]) && $value['name'] == "poster") 
            continue;

        $xf_root[] = $xfields['fields'][$value['name']];
    }
}


Если код в другое место ставлю, то ошибка

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\Vertrigo\www\site1.ru\engine\inc\editnews.php on line 1096

Версия dle 16.

SX2
Эксперт

SX2 - 6 февраля 2026 17:45 -

Его нужно не вставить, а заменить. Если вставлять, то только условие. Это код от 19 версии.

Самая сложная часть работы – решиться приступить к ней.

Kentavr
Юзер

Kentavr - 6 февраля 2026 17:51 -

Не совсем понял. "Если вставлять, то только условие"
Можно код без замены?

Kentavr
Юзер

Kentavr - 6 февраля 2026 17:56 -

В моей версии вообще нету такого кода r_fields в addnews.php поэтому видимо ничего не получится. Обновлять до 19 не хочу так как много кода изменено не будут работать многие вещи.
Мне бы под мою версию код (

Kentavr
Юзер

Kentavr - 6 февраля 2026 18:01 -

В любом случае спасибо за помощь! У кого 19. версия тому возможно пригодится

New-dev.ru
Эксперт

New-dev.ru - 7 февраля 2026 02:14 -

Ну если подходит скрытие через JS, тогда в "\engine\skins\default.skin.php" после:
var dle_login_hash = '{$dle_login_hash}';

добавьте:
var dle_group      = {$member_id['user_group']};


Приведенный же вами код:
$(document).ready(function() {
    if( dle_group == 2 || dle_group == 3) {
        $('#xfield_holder_prem2').hide(); 
    }
});


в "engine/inc/addnews.php" можно добавить после тега:
<script>
(65 строка в ДЛЕ 16)

Платные модули DLE - http://new-dev.ru
Телеграм-канал - http://t.me/webdle

Kentavr
Юзер

Kentavr - 7 февраля 2026 09:32 -

Спасибо, этот вариант сработал как надо. В editnews так же нашел куда пихнуть код )

Но как быть если нужно скрыть не одно поле, а несколько? Как должна выглядеть данная конструкция?

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

rewenas
Юзер

rewenas - 7 февраля 2026 17:24 -

Напишите их через запятую:
$('#xfield_holder_panel, #xfield_holder_panel2, #xfield_holder_panel3').hide();

Либо поместите их все с массив:

$(document).ready(function() {
    if( dle_group != 1 ) {
        var fieldsHide = [
            'xfield_holder_panel',
            'xfield_holder_panel2',
            'xfield_holder_panel3'
        ];
        
        $.each(fieldsHide, function(index, fieldId) {
            $('#' + fieldId).hide();
        });
    }
});

Kentavr
Юзер

Kentavr - 7 февраля 2026 20:01 -

Спасибо, второй вариант больше понравился )

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх