CCK и hook_form_alter

Аватар пользователя vectoroc

Задача: надо скрыть от глаз пользователя поле cck (заполняется с помощью js перед отправкой)

Долго ломал голову, пробовал разные способы. В итоге пришел к такому варианту:

function _hidde_field(&$element)
{
        $name = $element['#field_name'] . "[0][value]";
        $id = 'edit-' . str_replace('_', '-', $element['#field_name']) . '-0-value';
        $default_value = check_plain($element[0]['#default_value']['value']);
        $element[0]['#prefix'] = <<<PREFIX
                <input type="hidden" name="$name" id="$id" value="$default_value" />
                <!--
PREFIX;
        $element[0]['#suffix'] = "\n            -->\n";
}

и из hook_form_alter применяю эту функцию к нужным элементам.
В моем случае все это работает правильно, но больше похоже на костыль, чем на правильное решение.
Хотелось бы узнать, как такое правильно делать (что-то вроде [#type]=hidden).

Модули и темы:
Ключевые слова:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя Обухов Никита
Обухов Никита 8 лет назад

В CCK вообще есть настройка видимости полей, ставьте ему hidden и всё.

Аватар пользователя vectoroc
vectoroc 8 лет назад

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

Аватар пользователя kyky
kyky 8 лет назад

уберите права на доступ к полю для нужной роли (cck permissions)

Аватар пользователя vectoroc
vectoroc 8 лет назад

Так тогда поле не отобразится вообще и, насколько я понимаю, при сабмите не обработается автоматом.

Аватар пользователя xanderz
xanderz 8 лет назад

варианты:
1) скрыть через css. id поля {display:none}
2) скрыть через тот же javascript
3) темизировать форму редактирования ноды через theme_ТИПКОНТЕНТА_node_form