フォームがノードの作成、編集、または削除用かどうかを確認する必要があります。
現在、以下のスニペットを使用すると、フォームがノードの追加または編集用かどうかを確認できます。フォームがノードを削除するためのものかどうかを確認するにはどうすればよいですか?
if (!isset($node->nid) || isset($node->is_new)) {
// The form is for creating a new node.
}
else {
// The form is for editing the node.
}
この答え で述べたものを少し変更して使用できます。
function example_form_alter(&$form, &$form_state, $form_id) {
if (strpos(request_path(), '/add') !== FALSE) {
$page = 'add';
}
elseif (strpos(request_path(), '/edit') !== FALSE) {
$page = 'edit';
}
else if (strpos(request_path(), '/delete') !== FALSE) {
$page = 'edit';
}
}
これを試して:
function example_form_alter(&$form, &$form_state, $form_id) {
if (strpos($form['#action'], '/add/') !== FALSE) {
$page = 'add';
}
if (strpos($form['#action'], '/edit') !== FALSE) {
$page = 'edit';
}
if (strpos($form['#action'], '/delete') !== FALSE) {
$page = 'edit';
}
}
$form_id
はnode_delete_confirm
if ($form_id == 'node_delete_confirm') {
// delete form
}
else if (isset($node->is_new)) {
// add form
}
else {
// edit form
}
function hook_node_access($node, $op, $account) {
$type = is_string($node) ? $node : $node->type;
if (in_array($type, node_permissions_get_configured_types())) {
if ($op == 'create') {
//do somthing
}
if ($op == 'update') {
//do somthing
}
if ($op == 'delete') {
//do somthing
}
}
}
詳細については、これを確認してください https://api.drupal.org/api/drupal/modules%21node%21node.api.php/function/hook_node_access/7.x