Скрыть поле при создании узла

11

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

user780
источник

Ответы:

16

Если я понимаю ваш вопрос, я думаю, что вы можете использовать пользовательский модуль (в данном примере это имя модуля test_remove_field) и включить следующий код:

function test_remove_field_form_alter(&$form, &$form_state) {

    if (arg(0) == 'node' && arg(1) == 'add') {
    $form['field_test']['#access'] = 0;
    }

}

Примечание: помните, что это field_testдолжно быть ваше соответствующее имя поля.

cigotete
источник
Спасибо. Я не знаком с созданием модуля. Есть ли какие-либо CSS или тематические советы, чтобы сделать это?
user780
Здравствуйте, av, относительно вашего вопроса, да, это возможно, вы можете добавить такое же объявление IF в page.tpl.php (внутри зоны заголовка) и добавить в объявление соответствующее (ID или CLASS) правило CSS для удаления вашего поля: # field_name_test {display: none;}
сигарета
1
Вот код моего теста: <? php if (arg (0) == 'node' && arg (1) == 'add') {?> <style type = "text / css"> #field_name_test {display :никто; } </ style> <? php}?>
сигарета
4

Модуль Полевые разрешения позволяет вам устанавливать разрешения на уровне поля:

  • Создать поле (редактировать при создании контента)
  • Редактировать поле независимо от автора контента
  • Редактировать собственное поле для контента, созданного пользователем
  • Поле просмотра независимо от автора контента
  • Просмотр собственного поля контента, созданного пользователем

Вы можете использовать эти параметры для включения разрешения на основе ролей для поля.

Когда разрешения включены, доступ к этому полю по умолчанию запрещен, и для соответствующих ролей пользователей на странице администрирования разрешений должны быть предоставлены явные разрешения. С другой стороны, когда эти параметры отключены, разрешения полей наследуются от просмотра содержимого и / или прав редактирования. Например, пользователи, которым разрешено просматривать определенный узел, также смогут просматривать это поле и т. Д.

Полевые разрешения

Refineo
источник
3

Я бы использовал hook_form_alter () и установил бы ['#access']свойство так FALSEже, как ответ @ moon.watcher.

Если вы находитесь в Drupal 6, вам понадобится модуль для этого. В Drupal 7 вы можете вызывать hook_form_alter () из вашего шаблона.

pcambra
источник
2

Это пример использования модуля поддержки формы правил - https://www.drupal.org/project/rules_forms .

Особенности включают в себя:

  • Активируйте события для создания, проверки и отправки форм по форме.
  • Предназначайтесь для отдельных элементов формы или всей формы в условиях и действиях. Управляйте атрибутами элемента формы, такими как заголовок, описание, вес и т. Д.
  • Проверяйте значения элементов формы во время проверки формы.
  • Устанавливать ошибки формы при сбое проверки на основе правил.
  • Перенаправляйте пользователей на другую страницу при просмотре или отправке формы.
  • Проверьте атрибуты элементов в активных формах с помощью инструмента проверки элементов.
ske313
источник
0

Вы можете взять форму добавления / редактирования узла со страницами Panel. При этом вы можете выбрать то, что вы хотите в форме.

Dee
источник