CCK и hook_form_alter

Версия Drupal: 
Ключевые слова: 
Модули и темы: 
Втр, 05/05/2009 - 14:14

Задача: надо скрыть от глаз пользователя поле 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).

0 Спасибо

Комментарии

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

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

0 Спасибо
Аватар пользователя vectoroc
8 лет 2 months назад vectoroc #

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

0 Спасибо
Аватар пользователя kyky
8 лет 2 months назад kyky #

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

0 Спасибо
Аватар пользователя vectoroc
8 лет 2 months назад vectoroc #

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

0 Спасибо
Аватар пользователя xanderz
8 лет 2 months назад xanderz #

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

0 Спасибо