Vô hiệu hóa các tab dọc theo loại nội dung hoặc vai trò người dùng


10

Một số người dùng chỉ có thể có khả năng chỉnh sửa một trong các trường hiển thị trong các tab dọc trên biểu mẫu chỉnh sửa nút. Trong trường hợp như vậy, có vẻ khá ngớ ngẩn khi sử dụng các tab dọc vì chỉ có một tab dọc để chọn. Xem ảnh chụp màn hình:

ảnh chụp màn hình

Vì vậy, có thể vô hiệu hóa các tab dọc theo vai trò người dùng? Hoặc, chặn điều đó, vô hiệu hóa chúng hoàn toàn cho các loại nội dung nhất định? Đối với trường hợp sử dụng của tôi, tôi chỉ muốn Vị trí không được hiển thị trong các tab dọc.

Tôi đã thử kết xuất Trường kết xuất và Nhóm trường nhưng họ quản lý biểu mẫu không chính xác (lỗi, tôi nghĩ vậy). Sắp xếp các trường không thể tách ra các Tab dọc.


Bạn đã bao giờ sửa lỗi này? Cố gắng làm tương tự với tab sản phẩm ubercart.
Dee

Câu trả lời:


7

Có một số cách để làm điều này:

  1. Bạn có thể sử dụng mô-đun Renderable Elements (như bạn đã đề cập ở trên). Nó cho phép bạn đăng ký bất kỳ phần xây dựng nào trên bản cài đặt của mình và quản lý màn hình thông qua Giao diện người dùng trường. Nó sẽ làm cho các phần tử (bổ sung) có sẵn của các thực thể hiện có trên màn hình quản lý biểu mẫu / màn hình hiển thị hoặc ví dụ bạn có thể đăng ký biểu mẫu liên hệ và sắp xếp lại các trường thông qua Giao diện người dùng trường. Hoạt động hiện tại tốt trên các hình thức, hỗ trợ cho người khác đang đến trong lần lặp thứ hai.

  2. Hoặc thêm phần sau vào mô-đun tùy chỉnh của bạn:

    $config['yourcontenttype_node_form'] = FALSE;
    variable_set('vertical_tabs_forms', $config);
  3. Một mô-đun hộp cát vô hiệu hóa các tab dọc

Đây là vấn đề cốt lõi đề cập đến điều này.


Như tôi đã nói trong câu hỏi, Renderable Elements không hoạt động với tôi. Nó vẫn ở giai đoạn alpha và có một lỗi đã biết với Location. Vì vậy, nó không hoạt động cho tình huống của tôi. Nếu không, vâng, tôi nghĩ rằng điều này sẽ làm việc. Nếu trong tương lai lỗi đó được sửa, thì Renderable Elements có lẽ là cách tốt nhất để giải quyết vấn đề này.
Jay

xin lỗi tôi chỉ lướt qua câu hỏi của bạn và hoàn toàn bỏ lỡ tài liệu tham khảo của bạn đến mô-đun phần tử kết xuất. Điều đó đang được nói, phiên bản dev hoạt động như một nét duyên dáng. Cho nó đi.

Hừm, ok. Tôi sẽ thử sử dụng phiên bản dev nếu không có lựa chọn thay thế nào khác. Để lại điều này mở cho bây giờ.
Jay

Tôi đã sửa đổi câu trả lời của tôi ở trên với nhiều lựa chọn hơn.

1
Bạn đúng rồi. Tôi mới thử nó và nó không hoạt động trong D7 như đã làm trong D6. Thật không may nếu các phần tử có thể kết xuất không hoạt động và bạn không thoải mái với mô-đun của riêng bạn hoặc sử dụng mô-đun hộp cát, tôi không chắc chắn điều gì khác.

6

Bạn cũng có thể sử dụng kiểm tra #access để ngăn mọi người nhìn thấy các tab dọc.

$form['additional_settings']['#access'] = FALSE;

Chỉ cần thêm nó vào biểu mẫu móc thay đổi hoặc ở giữa tải và kết xuất biểu mẫu. Sau đó, bạn có thể gọi render ($ form) để đánh dấu.


2

Tôi đã viết một giải pháp đơn giản có thể trong chủ đề đã được đề cập: https://drupal.org/node/1048644#comment-7822687 . Để thuận tiện, tôi sẽ dán nó ở đây.

Có một cách đơn giản để vô hiệu hóa các tab dọc trên một biểu mẫu, chỉ bằng cách thay đổi $form['additional_settings']['#type']giá trị của biến 'fieldset'thành triển khai hook_form_alter () hoặc hook_form_FORM_ID_alter () , nếu nó bằng 'vertical_tabs'.
Bạn không cần thay đổi cài đặt truy cập hoặc đi bộ toàn bộ $formmảng một cách đệ quy, cái sau tiêu tốn quá nhiều tài nguyên không cần thiết.
(Đã thử nghiệm trong Drupal 7.23 .)

/**
 * Disable Vertical tabs on a form with simply changing the value of $form['additional_settings']['#type']
 * @see https://drupal.org/node/1048644
 */
function form_disable_vertical_tabs(&$form){
  // originally $form['additional_settings']['#type'] equals to 'vertical_tabs'
  if(isset($form['additional_settings']['#type']) && ($form['additional_settings']['#type'] === 'vertical_tabs')){
    $form['additional_settings']['#type'] = 'fieldset';
  }
}

/**
 * Implements hook_form_alter().
 */
function MYMODULEORTHEMENAME_form_alter(&$form, &$form_state, $form_id) {

  if($form_id == 'my_form_id'){
    // disable vertical tabs for this form
    form_disable_vertical_tabs($form);
  }
}

Tất nhiên, tất cả, thay thếMYMODULEORTHEMENAME cho tên của mô-đun hoặc chủ đề của riêng bạn (tên sau trong template.phptệp) my_form_id id của biểu mẫu của bạn.


Bạn cũng có thể vô hiệu hóa các trường dọc chỉ dành cho người dùng KHÔNG có vai trò quản trị viên :

/**
 * Implements hook_form_alter().
 */
function MYMODULEORTHEMENAME_form_alter(&$form, &$form_state, $form_id) {

  global $user;
  $is_administrator = in_array('administrator', array_values($user->roles));

  if($form_id == 'my_form_id'){
    // if $user does NOT have the administrator role.
    if (!$is_administrator) {
      // disable vertical tabs for this form
      form_disable_vertical_tabs($form);
    }
  }
}

Trong trường hợp ai đó quan tâm, tôi đính kèm một bản vá (mà không giống như ở trên) để Dripman mô-đun sandbox 's: # 2.080.739: Đơn giản hóa phương pháp vô hiệu hóa các tab theo chiều dọc với chỉ cần thay đổi $form['additional_settings']['#type']để'fieldset' .


Giải pháp tuyệt vời, @ Sk8erPeter. Tôi tự hỏi liệu có thể ẩn các cài đặt bổ sung mà không cài đặt '#access' = FALSE không, vì điều này làm mất các giá trị sẽ được đặt bởi các cài đặt mặc định, như bí danh url và trạng thái được xuất bản.
Jav

0

Các phần tử kết xuất hiện không được hỗ trợ và thừa nhận trên trang dự án rằng nó xung đột với một số mô-đun đóng góp khác vì vậy tôi sẽ không dựa vào nó cho các trang web sản xuất.

Câu hỏi làm thế nào để vô hiệu hóa hoàn toàn các tab dọc được giải quyết trong chuỗi này .

Dripman đã tạo ra một mô-đun hộp cát đơn giản để vô hiệu hóa hoàn toàn các tab dọc.

Tùy thuộc vào mức độ tham gia mong muốn của bạn với mã hóa, mô-đun của Dripman có thể dễ dàng tùy chỉnh để được chọn lọc trên cơ sở các trường / vai trò.

Xin lỗi vì trùng lặp với câu trả lời ngắn gọn của @nicoz


0

Bạn có thể sử dụng mô-đun Hiển thị tab dọc .

Mô-đun này giúp quản lý mức độ hiển thị của các tab dọc trên biểu mẫu thêm / chỉnh sửa loại nội dung.

Để quản lý mức độ hiển thị của tab dọc trên loại nội dung thêm / chỉnh sửa biểu mẫu. chỉ cần truy cập /admin/config/user-interface/vertical-tabs-visibility trang và chọn loại nội dung. Các tab dọc ở dạng thêm / chỉnh sửa nút sẽ bị vô hiệu hóa đối với các loại nội dung được kiểm tra.

Hiện tại mô-đun đang ở trong hộp cát


0

Đối với trường hợp sử dụng của tôi, tôi đã cố gắng vô hiệu hóa các tab dọc đang được áp dụng trên phần Tùy chọn xuất bản trên biểu mẫu chỉnh sửa nút (vì đây là trường duy nhất mà một nhóm người dùng cụ thể có quyền truy cập):

// Place somewhere in MYMODULE_form_alter()...
$form['additional_settings']['#type'] = 'fieldset';
$form['additional_settings']['#collapsible'] = FALSE;
$form['options']['#collapsible'] = FALSE;

Để làm rõ, không chỉ làm bạn cần phải thiết lập additional_settings #collapsibleđể FALSE, bất kỳ yếu tố bên trong cũng phải có #collapsible set toFALSE , in my case that was theyếu tố options`.

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.