Chuyển hướng người dùng sau khi thêm / chỉnh sửa nút


14

Tôi muốn chuyển hướng người dùng đến một trang tùy chỉnh, sau khi họ tạo một nút hoặc chỉnh sửa nó.

Câu trả lời:


6

Bạn có thể sử dụng hook_form_alterđể thêm trình xử lý gửi tùy chỉnh nơi bạn có thể đặt đường dẫn chuyển hướng.

Xem FAPI để biết thêm chi tiết về chuyển hướng biểu mẫu.


1
Cảm ơn câu trả lời của bạn ! Tôi đã đọc về FAPI nhưng vẫn còn một câu hỏi cần đặt ra: Tôi nên đặt hàm hook_form_alter ở đâu?
ousneo

2
@ousneo Trong drupal 7, bạn có thể đặt nó trong chủ đề của mình hoặc trong một mô-đun tùy chỉnh mà bạn tạo.
googletorp

1
vui lòng xem câu trả lời @Dmitry Vyal
Capi Etheriel

1
Đây là một mô-đun thực hiện chuyển hướng sau khi lưu. drupal.org/project/node_save_redirect
cơn bão

1
Trong khi được chấp nhận, câu trả lời này quá ngắn gọn để có ích. Nó thực sự quan trọng làm thế nào bạn thêm trình xử lý trình tùy chỉnh của mình và câu trả lời này là im lặng về điều đó. Câu trả lời hay nhất IMHO là từ @leymannx (nhưng xem bằng nhận xét về trường hợp sử dụng chỉnh sửa).
Cấp tiến miễn phí

4

Bạn có thể tạo quy tắc chuyển hướng người dùng đến bất kỳ trang nào khi họ tạo hoặc chỉnh sửa một loại nội dung cụ thể. Khi bạn thêm quy tắc, chọn "Sau khi tạo nội dung mới", hãy thêm một điều kiện của "Nội dung có loại". Phần You Do sẽ cung cấp cho bạn tùy chọn để chuyển hướng người dùng đến bất kỳ trang nào bạn muốn.

Để chuyển hướng sau khi chỉnh sửa nút, chỉ cần tạo quy tắc mới và chọn "Sau khi cập nhật Nội dung Hiện tại" làm tùy chọn đầu tiên của bạn.


Tôi đã sử dụng Quy tắc để chuyển hướng sau khi tạo một nội dung cụ thể, nhưng người dùng không nhận được phản hồi ngay bây giờ. Tôi muốn cho người dùng thấy rằng "Nội dung của bạn đã được tạo". Làm thế nào tôi có thể cải thiện điều này?
wallace740

1
Thêm một hành động khác sau hành động chuyển hướng thành "Hiển thị thông báo có thể định cấu hình trên trang web" và thêm thông báo tùy chỉnh của bạn từ đó.

Tôi đã thêm một Quy tắc khác nhưng tôi nghĩ rằng tôi bỏ lỡ điều gì đó trong chủ đề tùy chỉnh của mình vì thông báo không được hiển thị trên trang nhất của tôi. Tôi đang sử dụng một mô-đun 'Tin nhắn tốt hơn' để hiển thị các loại tin nhắn này trong cửa sổ bật lên! cấu hình quy tắc
wallace740

Kinh nghiệm của tôi là lớp phủ phá vỡ quy tắc chuyển hướng, hãy cẩn thận.
Capi Etheriel

Trong trường hợp của tôi, biểu mẫu thêm nút này được nhúng trong bảng điều khiển. hook_form_alter đã không bắt được nó. Nhưng các quy tắc làm việc tuyệt vời!
Druvision

2

Khi thực hiện việc này, đảm bảo cũng bỏ đặt điểm đến hiện có có thể thường được thêm vào URL khi bạn nhấp vào nút chỉnh sửa để chỉnh sửa nút hiện có.

Thay thế articlevào MYMODULE_form_article_node_form_altervới tên máy kiểu nội dung của bạn.

/**
 * Implements hook_form_BASE_FORM_ID_alter().
 */
function MYMODULE_form_article_node_form_alter(&$form, &$form_state, $form_id) {

  $form['actions']['submit']['#submit'][] = '_MYMODULE_node_form_redirect';
}

/**
 * Submit callback.
 */
function _MYMODULE_node_form_redirect($form, &$form_state) {

  // Unset destination first.
  unset($_GET['destination']);
  unset($_REQUEST['edit']['destination']);

  $form_state['redirect'] = 'FOO/BAR';
}

Điều này hoạt động cho các chuyển hướng sau khi thêm một nút, nhưng không phải sau khi chỉnh sửa nó. Tôi hiểu rằng các cuộc gọi đến unsetcác destinationcó nghĩa vụ phải xử lý các trường hợp chỉnh sửa sử dụng, nhưng họ không có hiệu lực trên trang web Drupal 7 của tôi.
Cấp tiến miễn phí

@FreeRadical - Bạn nói đúng. Tôi đã cập nhật câu trả lời để sử dụng hook_form_BASE_FORM_ID_alter thay vào đó, nhằm vào cả hai - thêm và chỉnh sửa.
leymannx


1

Các tài liệu không rõ ràng về nó, nhưng bạn nên sửa đổi $_GET['destination']biến, không $_REQUESThoặc $form_state['redirect'].


1
Sửa đổi $ form_state ['redirect'] hoạt động tốt trong Drupal 7 ...
Felix Eve

1

trong Drupal 7, bạn có thể thay đổi biểu mẫu chỉnh sửa nút thành 'đính kèm' chức năng gửi của riêng bạn, trong đó bạn có thể thay đổi form_state của biểu mẫu xác nhận xóa nút để bao gồm tham số 'đích' ... chỉ cần thực hiện điều này trong một chủ đề tùy chỉnh i ' đã được phát triển như là một mô hình con của chủ đề quản trị 'bảy' ...

Tài liệu cho hook_form_FORM_ID_alter

Bạn có thể thêm móc này vào một mẫu / chủ đề, không chỉ cho các mô-đun.

vì vậy trong chủ đề của bạn template.php, hãy thêm biểu mẫu này thay đổi hook:

function yourtheme_node_delete_form_submit( &$form, &$form_state ) {
    $form_state[ 'redirect' ][ 1 ][ 'query' ][ 'destination' ] = "admin/content";
}

và sau đó, thì đấy. không còn được chuyển hướng đến trang chủ sau khi một nút bị xóa.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.