如何删除CCK生成的Drupal内容类型中的默认标题和正文字段?
使用内容创建工具包在Drupal中创建新的内容类型时,会自动在生成的表单中获取"标题"和"正文"字段。有没有办法删除它们?
解决方案
要删除正文,请编辑类型,展开"提交表单设置",然后在正文字段标签中输入空白。对于标题,我们可以将其重命名为另一个文本字段。如果我们真的不需要任何文本字段,则可以创建一个自定义模块(称为foo),并创建函数foo_form_alter(),当$ form ['type'] [' #value']是节点类型。
如果我们不是开发人员(或者希望简化开发过程),则另一种可能的解决方案是利用auto_nodetitle模块。自动节点标题可让我们创建用于生成节点标题的规则。这些可以是程序规则,被替换的令牌,也可以只是静态文本。值得一看,如果没有其他。
If you're not a developer (or you want to shortcut the development process), another possible solution is to utilize the auto_nodetitle module. Auto nodetitle will let you create rules for generating the title of the node. These can be programmatic rules, tokens that are replaced, or simply static text. Worth a look if nothing else.
并添加到William OConnor的解决方案中...
不幸的是,该模块的文档不多。我认为,只有将PHP与PHP配合使用时,它才真正有效。选中"在模式中评估PHP",然后在"标题模式"字段中输入类似以下内容的内容:
<?php echo $node->field_staff_email[0]['email']; ?>
或者:
<?php echo $node->field_staff_name[0]['value'] . '-' . gmdate('YmdHis'); ?>
...我有一个内部名称为" field_staff_email"的字段,并且正在使用CCK电子邮件模块-因此使用了"电子邮件"类型。或者,我有一个内部名称为" field_staff_name"的字段,并且只是一个普通的文本字段,因此使用了"值"类型。最后,gmdate()调用是为了确保唯一性,因为我们可能有两个或者多个工作人员为同一事物命名。
我发现所有这些内容的方法是首先尝试:
<?php print_r($node); ?>
...这当然会带来疯狂的结果,但是至少我能够解析输出并弄清楚如何在此处正确使用$ node对象。
只需注意,如果我们使用这些PHP例程中的任何一个,那么最终在Drupal Admin中的Content列表中将显示与我们编写PHP完全相同的条目。这就是为什么我不只是单独使用gmdate()的原因,因为那样可能很难找到要编辑的记录。
还要注意,由于gmdate('YmdHis')相当长,因此我们可以在gmdate()上使用Base-36转换以减小输出的大小。
无需安装任何东西:
编辑内容类型时,请按"编辑"
(在"编辑" |"管理字段" |"显示字段"菜单上)
单击提交表单设置
在"身体"字段标签上:
将其保留为空白,将删除"正文"字段。