【发布时间】:2011-04-15 13:51:34
【问题描述】:
有没有办法检测正在查看的节点表单是“编辑”还是“添加新节点”表单?
【问题讨论】:
有没有办法检测正在查看的节点表单是“编辑”还是“添加新节点”表单?
【问题讨论】:
检测到哪里?在 hook_alter 中?在模板中?其他地方?
一般来说,方法是获取 $node 对象,并查看它的 nid 字段是否已设置。如果是,那就是编辑。
【讨论】:
如果您不想加载整个节点对象,也可以使用 URL。 添加新节点时,URL 中的 arg(0) 为“node”,arg(1) 为“add”,arg(2) 为“content_type_name”,而在查看节点的情况下为 arg(0 ) 将是节点,而 arg(1) 将是 nid(即数字)。 这只是另一种检测方式。
【讨论】:
检查来自 drupal.stackexchange.com 的 these answers
例如:
function mymodule_form_node_form_alter(&$form, &$form_state) {
$node = $form_state['node'];
if (!isset($node->nid) || isset($node->is_new)) {
// This is a new node.
}
else {
// This is not a new node.
}
}
或如前所述使用 arg() 函数。
【讨论】:
if ($node->is_new) {do_something_for_new_node();}
【讨论】: