【发布时间】:2009-08-18 02:47:43
【问题描述】:
我正在尝试为自定义类型创建节点表单。我启用了有机组和分类法,但希望它们的元素以非标准顺序出现。所以我实现了hook_form_alter 并将og_nodeapi 子数组的#weight 属性设置为-1000,但它仍然适用于分类和菜单。我什至尝试将子数组更改为字段集(以强制它实际呈现),但没有骰子。我也试过设置
$form['taxonomy']['#weight'] = 1000
(我有两个词汇,所以它已经被渲染为一个字段集)但这也不起作用。
我将我的模块的权重设置得很高,并在系统表中确认它确实是网站上最高的模块 - 所以我完全没有想法。有什么建议吗?
更新:
虽然我不完全确定如何,但我确实设法让分类字段集低于其他所有内容,但现在我遇到了一个相关问题,希望它更易于理解。在分类字段集中,我有两个项目(一个标签和一个多选),我想在 hook_form_alter 中添加一些指令,如下所示:
$form['taxonomy']['instructions'] = array(
'#value' => "These are the instructions",
'#weight' => -1,
);
您猜对了,它出现在分类模块插入的术语之后。但是,如果我将其更改为字段集:
$form['taxonomy']['instructions'] = array(
'#type' => 'fieldset', // <-- here
'#title' => 'Instructions', // <-- and here for good measure
'#value' => "These are the instructions",
'#weight' => -1,
);
然后它会像我想要的那样神奇地浮到顶部。我还尝试了 textarea(这也有效)并明确表示标记(这没有)。
所以基本上,将类型从“标记”(默认 IIRC)更改为“字段集”具有不再忽略其权重的效果。
【问题讨论】:
-
您是否尝试更改表单或呈现页面上的顺序。我不认为钩子形式改变会改变两者。
-
在下面更新了我的答案,在安装 CCK 模块时添加了另一个可能的原因。
-
嗨,阿德里安,我再次更新了答案以解决您的最新编辑问题。