Нестандартная практика - контролировать, какие поля пользователь видит через слой тем.Лучше использовать систему контроля доступа должным образом, чтобы другие разработчики знали, как снова настроить вещи для своих собственных изменений.
Я бы создал модуль со следующим кодом:
<?php
/**
* Implementation of hook_form_alter().
*/
function custommodule_form_alter(&$form, &$form_state, $form_id) {
global $user;
// All node forms are built with the form_id "<machine_name>_node_form"
if (substr($form_id, -10) != '_node_form') {
// Only making changes on the node forms.
return;
}
// Make the menu field invisible to those without the administrator role.
// This will hide the menu field from users with the user permissions to make changes.
// Remember 'administrator' is not a default role in Drupal. It's one you create yourself or install a module (like Admin Role*)
$form['menu']['#access'] = in_array('administrator', array_values($user->roles));
// This approach allows me to tie access to any permission I care to name.
// This specifically limits the menu field to menu administrators.
$form['menu']['#access'] = user_access('administer menu');
}
?>
Используя этот подход, форма просто не будет строить те элементы, к которым текущий пользователь не может получить доступ.
Если вы хотите узнать об элементах формы на странице формы вашего узла, вы можете найти руководство через Google.Если вы хотите пробежаться по полной распечатке из структуры Form, вставьте drupal_set_message(print_r($form, TRUE));
в вашу реализацию hook_form_alter (), чтобы увидеть, что там.Более того, установите Devel , и тогда вы можете получить более приятный тематический вывод, вставив dpm($form);
.