Drupal 更好的节点形式主题化方法

Drupal 更好的节点形式主题化方法,drupal,drupal-7,drupal-theming,Drupal,Drupal 7,Drupal Theming,我有一个定义内容类型的模块。假设我只有title和body字段 当节点表单呈现时,它具有标准的标题(textfield)和正文(textarea) 我想将这两个字段包装成字段集 这就是我实现这一目标的方式,但我不认为这是最好的方式 /** *实现hook_form()。 */ 函数hook\u form($node,$form\u state){ 返回节点内容表单($node,$form\u state); } /** *实现hook\u form\u form\u ID\u alter()。

我有一个定义内容类型的模块。假设我只有
title
body
字段

当节点表单呈现时,它具有标准的
标题(textfield)
正文(textarea)

我想将这两个字段包装成
字段集

这就是我实现这一目标的方式,但我不认为这是最好的方式

/**
*实现hook_form()。
*/
函数hook\u form($node,$form\u state){
返回节点内容表单($node,$form\u state);
}
/**
*实现hook\u form\u form\u ID\u alter()。
*/
函数钩子\表单\节点\表单\变更(&$form,&$form\ state,$form\ id){
如果($form\u id=='content\u type\u name\u node\u form'){
$form['info']=数组(
“#类型”=>“字段集”,
“#title”=>t('描述你的内容')
);
$form['info']['title']=$form['title'];
未结算($form['title']);
$form['info']['body']=$form['body'];
未结算($form['body']);
}
}
有什么建议可以让它变得更好吗

更新

我想到的另一个变体。差不多,只是有点改进

/**
 * Implements hook_form_FORM_ID_alter().
 */
function hook_form_node_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'content_type_name_node_form') {
    $groups = array(
      'info' => array(
        'title' => t('Describe your content'),
        'fields' => array('title', 'body')
      )
    );

    foreach ($groups as $key => $group) {
      $form[$key] = array(
        '#type' => 'fieldset',
        '#title' => $group['title']
      );
      foreach ($group['fields'] as $field) {
        $form[$key][$field] = $form[$field];
        unset($form[$field]);
      }
    }
  }
}

你做的正是你应该做的,弗拉德。这就是API的使用方式,实际上没有其他方法可以通过代码来实现


你也可以使用面板来改变布局,虽然我自己没有做过,也不能解释这个过程,我也不能肯定地说它会像你在这里做的那样。使用自定义模块可能是最直接的途径。

您完全按照您应该的方式来做。这就是API的使用方式,实际上没有其他方法可以通过代码来实现


你也可以使用面板来改变布局,虽然我自己没有做过,也不能解释这个过程,我也不能肯定地说它会像你在这里做的那样。使用自定义模块可能是最直接的途径。

我必须同意David Fells的观点——我认为您的操作方式没有问题

但为了给您提供一种在字段集中设置标题和正文字段的非编程方法:您可以查看

顾名思义,Fieldgroup将字段分组在一起。全部的 可部署实体将有可能添加要包装的组 他们的田地在一起。Fieldgroup附带默认的HTML包装器 如垂直选项卡、水平选项卡、手风琴、字段集或div 包装纸


老实说,如果你只想为你的标题和正文创建一个字段集,那就太过分了,但是如果你对字段分组和主题有其他类似的要求,那么让用户界面为你做这件事可能会很有用。

我不得不同意大卫·费尔斯的观点——我认为你的做法没有问题

但为了给您提供一种在字段集中设置标题和正文字段的非编程方法:您可以查看

顾名思义,Fieldgroup将字段分组在一起。全部的 可部署实体将有可能添加要包装的组 他们的田地在一起。Fieldgroup附带默认的HTML包装器 如垂直选项卡、水平选项卡、手风琴、字段集或div 包装纸


老实说,如果你只想为你的标题和正文创建一个字段集,那就太过分了,但是如果你对字段分组和主题有其他类似的要求,那么让用户界面为你做这件事可能会很有用。

Fieldgroup很棒。我同意这有点过火,但肯定会奏效。我真的不得不同意。一旦你有了大的内容类型,就可以将这些字段分组到垂直选项卡和手风琴组中。我同意这有点过火,但肯定会奏效。我真的不得不同意。一旦你有了大的内容类型,就可以将这些字段分组到垂直选项卡和手风琴组中。