Answers:
有几种方法可以做到这一点:
您可以使用Renderable Elements模块(如上所述)。它使您可以在安装中注册任何构建版本,并通过Field UI管理显示。它将使(附加)元素可用于管理表单/显示屏上的现有实体,或者您可以例如注册联系人表单并通过Field UI重新排列字段。目前可以在表单上正常工作,对其他表单的支持将在第二次迭代中出现。
或将以下内容添加到您的自定义模块中:
$config['yourcontenttype_node_form'] = FALSE;
variable_set('vertical_tabs_forms', $config);
甲沙箱模块禁用垂直制表符
这是涉及此的核心问题。
我在前面提到的线程中写了一个简单的可能的解决方案:https : //drupal.org/node/1048644#comment-7822687。为了方便起见,我将其粘贴在这里。
有一种简单的方法可以通过在hook_form_alter()或hook_form_FORM_ID_alter()的实现中将$form['additional_settings']['#type']
变量的值更改为来禁用表单上的垂直制表符(如果等于)。
您无需更改访问设置或递归遍历整个数组,后者会不必要地消耗过多的资源。
(在Drupal 7.23中进行了测试。)'fieldset'
'vertical_tabs'
$form
/**
* Disable Vertical tabs on a form with simply changing the value of $form['additional_settings']['#type']
* @see https://drupal.org/node/1048644
*/
function form_disable_vertical_tabs(&$form){
// originally $form['additional_settings']['#type'] equals to 'vertical_tabs'
if(isset($form['additional_settings']['#type']) && ($form['additional_settings']['#type'] === 'vertical_tabs')){
$form['additional_settings']['#type'] = 'fieldset';
}
}
/**
* Implements hook_form_alter().
*/
function MYMODULEORTHEMENAME_form_alter(&$form, &$form_state, $form_id) {
if($form_id == 'my_form_id'){
// disable vertical tabs for this form
form_disable_vertical_tabs($form);
}
}
当然,仅此而已MYMODULEORTHEMENAME
即可替换为您自己的模块或主题的名称(后者在template.php
文件中)以及my_form_id
表单的ID。
您还可以仅对不具有管理员角色的用户禁用垂直字段:
/**
* Implements hook_form_alter().
*/
function MYMODULEORTHEMENAME_form_alter(&$form, &$form_state, $form_id) {
global $user;
$is_administrator = in_array('administrator', array_values($user->roles));
if($form_id == 'my_form_id'){
// if $user does NOT have the administrator role.
if (!$is_administrator) {
// disable vertical tabs for this form
form_disable_vertical_tabs($form);
}
}
}
如果用户感兴趣,我附着的贴片(它与上述相同),以Dripman的沙箱模块:#2080739:简化与只是改变了禁用垂直片的方法$form['additional_settings']['#type']
来'fieldset'
。
对于我的用例,我试图禁用在节点编辑表单上“ 发布选项”部分上应用的垂直选项卡(因为这是一组特定的用户有权访问的唯一字段集):
// Place somewhere in MYMODULE_form_alter()...
$form['additional_settings']['#type'] = 'fieldset';
$form['additional_settings']['#collapsible'] = FALSE;
$form['options']['#collapsible'] = FALSE;
为了澄清additional_settings
#collapsible
起见,不仅需要将其设置为FALSE,而且其中的任何元素还必须具有#collapsible set to
FALSE , in my case that was the
options`元素。