Làm cách nào để ẩn Tùy chọn Định dạng Nhập liệu và trợ giúp văn bản dưới dạng văn bản?


32

Làm cách nào để ẩn Tùy chọn định dạng đầu vào và trợ giúp văn bản dưới dạng văn bản khi thêm | chỉnh sửa nút?

Ảnh chụp màn hình - một phần để ẩn được chọn với hình chữ nhật màu đỏ


Tôi nghĩ rằng bạn có thể làm điều đó nếu bạn truy cập vào biểu mẫu thông qua hook_form_altertuy nhiên tôi không chắc chắn về các chi tiết, vì vậy tôi sẽ không đăng bài này dưới dạng câu trả lời ...
acm

Câu trả lời:


26

Đối với Drupal 7, bạn có thể sử dụng mô-đun Đơn giản hóa . Nó cho phép bạn ẩn các tùy chọn Định dạng văn bản textarea, cũng như các thành phần khác trên các hình thức nút.


3
Nếu bạn xem nguồn của nó ( cgit.drupalcode.org/simplify/tree/simplify.module?id=7681b0e ), mô-đun sử dụng jQuery để ẩn các tùy chọn định dạng văn bản. Thật xấu hổ vì 1: bạn chỉ muốn ẩn định dạng văn bản và không cần toàn bộ mô-đun và 2: javascript trở thành một yêu cầu. Tại sao không chỉ ẩn nó với CSS như câu trả lời của I Muff Adrian Luchian cho thấy? Nó chắc chắn thích hợp và sạch sẽ.
B2F

đơn giản hóa đã không làm việc nhất quán cho tôi. trong một số trường hợp nó làm việc ở những người khác thì không.
snowguy

Không làm việc cho tôi. Tôi đã sử dụng chủ đề bootstrap vì vậy có lẽ vì điều đó.
sobi3ch

Đơn giản hóa không làm việc cho tôi quá.
Đăng nhập

25

Bạn có thể sử dụng hook_form_alter trong một mô-đun tùy chỉnh để thực hiện việc này.

Chẳng hạn, trong drupal 7:

// hook_form_alter function
function CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
    // We want this on a specific node type
    if ($form_id == 'NODE_TYPE_node_form') {
        $form['#after_build'][] = 'CUSTOM_MODULE_NODE_TYPE_node_form_after_build';
    }
}

// afterbuild function
function CUSTOM_MODULE_NODE_TYPE_node_form_after_build($form) {
    // We want this on a specific field
    $form['YOUR_FIELD']['und']['0']['format']['#access'] = FALSE;
    return $form;
}

2
điều này hoạt động nhưng có tác dụng phụ: nó loại bỏ trình soạn thảo wysiwyg khỏi vùng văn bản
castaway

Điều đó đã đánh lừa tôi. Tôi chủ yếu chỉ muốn làm sạch văn bản đầu vào.
RevNoah

1
tốt hơn hết là đề cập đến LANGUAGE_NONE thay vì 'und' và cả hàm after_build nên kiểm tra dựa trên vai trò trong trường hợp các vai trò ưu việt khác có thể xem hộp Định dạng văn bản.
Aneek Mukhopadhyay

12

Trong drupal 6 có mô-đun Định dạng tốt hơn thực hiện chính xác những gì bạn muốn, có phiên bản 7 dev nhưng nó đi kèm với một cảnh báo rằng nó đang được phát triển nặng. Nếu trang web của bạn vẫn đang được phát triển thì có thể đáng để thử.


Có vẻ hoạt động tốt đối với người dùng không phải là quản trị viên, ngay cả khi bạn xóa quyền cho nhóm quản trị viên, người dùng 1 vẫn sẽ thấy các tùy chọn trong D7
joelpittet

Các định dạng tốt hơn hoạt động tốt cho D7, ổn định không có vấn đề nghiêm trọng và bản phát hành Beta 2 vào tháng 1 năm 2016.
Duncanmoo

9

Bạn thực sự có thể chỉ cần giết mục định dạng.

function MY_THEME_form_comment_form_alter(&$form, &$form_state, &$form_id) {
  $form['comment_body']['#after_build'][] = 'MY_THEME_configure_comment_form';
}

function MY_THEME_configure_comment_form(&$form) {
  unset($form[LANGUAGE_NONE][0]['format']);
  return $form;
}

+1, giải pháp tốt nhất. Đối với khách truy cập trong tương lai, thay thế TÙY CHỈNH bằng tên chủ đề đang hoạt động của bạn. Đoạn mã này sẽ đi vào tập lệnh template.php của bạn trong thư mục của chủ đề đang hoạt động. Và nếu trang web của bạn đã kích hoạt đa ngôn ngữ, hãy thay thế LANGUAGE_NONE bằng mã ngôn ngữ của bạn.
Janaka R Rajapaksha

2
CUSTOMđược dự định là tên chủ đề tùy chỉnh của bạn. Bạn KHÔNG BAO GIỜ nên mã cứng một ngôn ngữ, nếu bạn cần sử dụng ngôn ngữ hoạt động global $language;để lấy ngôn ngữ đó.
doublejosh

Lưu ý: LANGUAGE_NONElà hằng số có giá trị und... không sử dụng und.
doublejosh

Điều này cũng giết chết wysiwyg
chữ số

7

Tôi nghĩ rằng giải pháp tốt nhất là, không cho phép truy cập vào phần tử chọn định dạng văn bản. Nếu bạn hoàn toàn không đặt nó, bạn sẽ phải đối mặt với các tác dụng phụ không mong muốn khi trình soạn thảo WYSIWYG biến mất. Vì vậy, tôi đề xuất mã sau đây.

function MY_MODULE_form_comment_form_alter(&$form, &$form_state, &$form_id) {
  $form['comment_body']['#after_build'][] = 'MY_MODULE_hide_text_format';
}


function MY_MODULE_hide_text_format(&$form) {
  $form[LANGUAGE_NONE][0]['format']['#access'] = false;
  return $form;
}

Đây là một giải pháp tuyệt vời nếu bạn chỉ muốn ẩn nó trên một lĩnh vực cụ thể. Và WYSIWYG vẫn hoạt động.
Dalin

6

Sử dụng CSS, cách dễ nhất. Bọ lửa

#body-add-more-wrapper #edit-body-und-0-format {display: none;}

Sức mạnh của CSS và Fireorms

Chúc may mắn.


3
Tôi không khuyến nghị "mặc dù nó hoạt động" CSS ẩn.
saadlulu

không phải là một câu trả lời, một nơi nghỉ ngơi
Pan Chrono

5
Tại sao ? Đây là một câu trả lời tuyệt vời bởi vì câu hỏi là để ẩn nó, không phải để loại bỏ nó. Nó không giống như việc che giấu nó sẽ gây ra mối đe dọa bảo mật hoặc có hại cho SEO ... Bạn đã xác định quyền trong cấu hình định dạng văn bản, vậy vấn đề nằm ở đâu?
B2F

1
Tôi muốn che giấu nó. +1 phiếu bầu cho bạn.
Alyssa Gono

mô-đun tiêm css làm việc kỳ diệu. xem: prntscr.com/cieuvs
Patoshi ト

5

CHO Drupal 7

function MODULENAME_element_info_alter(&$type) {
  if (isset($type['text_format']['#process'])) {
    foreach ($type['text_format']['#process'] as &$callback) {

      if ($callback === 'filter_process_format') {
        $callback = 'MODULENAME_filter_process_format';
      }
    }
  }
}


function MODULENAME_filter_process_format($element) {
  $element = filter_process_format($element);

  // Change input format to "Filtered HTML" for body fields of NODETYPE_NAME

  if ($element['#bundle'] == 'NODETYPE_NAME' && $element['#field_name'] == 'body') {

    $element['format']['format']['#default_value'] = 'filtered_html';
    $element['format']['format']['#format'] = 'filtered_html';  
    $element['format']['format']['#value']  = 'filtered_html';
    $element['#format'] = 'filtered_html';

  }
  return $element;
}

Đây là một kỹ thuật tuyệt vời nếu bạn muốn ẩn nó trên nhiều / tất cả các lĩnh vực.
Dalin

2

Một cách đơn giản khác để ẩn tùy chọn định dạng đầu vào là xóa tất cả định dạng đầu vào khác khỏi hồ sơ người dùng mà bạn muốn ẩn tùy chọn. Đối với điều này, hãy đi admin-> configure-> định dạng đầu vào và xóa tất cả các vai trò người dùng khỏi tất cả các định dạng đầu vào khác ngoại trừ một định dạng bạn muốn đưa ra theo mặc định.


6
Chỉ hoạt động nếu bạn chỉ muốn kích hoạt văn bản thuần túy. Bởi vì bạn không thể vô hiệu hóa cái đó.
Fletch

chính xác. Bạn không thể chỉ có "Văn bản được lọc". Xin lỗi, nhưng câu trả lời này là sai lệch.
nerdoc

2

Tôi đã làm điều này:

Bỏ chọn "Sử dụng định dạng văn bản HTML đã lọc" và "Quản lý định dạng và bộ lọc văn bản" từ mọi người> quyền cho người dùng ẩn danh và người dùng được ủy quyền để họ không thể sử dụng CKeditor.

Tất nhiên bạn có thể vô hiệu hóa nó khỏi CSS bằng cách "display: none;" đối với lớp div cụ thể (đó là .filter-Wrapper) và ẩn tất cả các khu vực bạn đã chỉ lên trên nhưng trong trường hợp này, khu vực này được ẩn cho tất cả mọi người, kể cả siêu người dùng.


1

Cài đặt mô-đun CSS Injection (hiện tại chỉ có phiên bản phát triển hoạt động cho Drupal 8).

Sau đó chuyển đến trang quản trị của CSS Injection (/ admin / config / Development / css-kim phun). Tạo quy tắc CSS mới với mã này (hoặc bất kỳ mã nào áp dụng cho một lớp của văn bản khu vực hình thành):

.filter-guidelines {
    display: none;
}

Chọn áp dụng nó trên Seven theme (hoặc bất kỳ chủ đề quản trị nào đang sử dụng). Lưu và thưởng thức!


Cài đặt trình tiêm css 1.x vì 2.0 cũ hơn. Dưới đây là một bản xem trước của nó trông như thế: prntscr.com/cieuvs - Module này công trình kỳ diệu cho tiêm css vs module khác như CPN (mã mỗi node)
Patoshiパトシ

0

Bạn không thể xóa định dạng nhập "Văn bản thuần túy". Và RTE không hiển thị khi bạn sử dụng định dạng nhập "Văn bản thuần túy".

Tôi sẽ sử dụng tùy chọn CSS.


Bộ chọn định dạng đầu vào không xuất hiện khi người dùng hiện đang đăng nhập có thể chỉ sử dụng định dạng đầu vào; định dạng đầu vào duy nhất đó có thể là một định dạng khác và bộ chọn sẽ không xuất hiện giống nhau.
kiamlaluno

0

Tôi sử dụng cả "loại bỏ tất cả các định dạng đầu vào khác khỏi hồ sơ người dùng" và cách css.


0

Hãy thử đơn giản hóa mô-đun.

Đơn giản hóa cho phép các trường cụ thể được ẩn khỏi giao diện người dùng. Điều này giúp khử các biểu mẫu lộn xộn và thể hiện trải nghiệm thân thiện hơn với người chỉnh sửa nội dung.


đơn giản hóa công việc cho các lĩnh vực khác, nhưng tôi không thể làm cho nó hoạt động cho các định dạng đầu vào.
Druvision

0

Nếu bạn muốn ẩn các định dạng nhưng vẫn giữ chúng có sẵn, hãy thử mô-đun " Định dạng đơn giản hóa ": https://www.drupal.org/project/simplified_formats

Nó ẩn các chi tiết định dạng trong một biểu tượng dấu hỏi nhỏ bên cạnh thả xuống lựa chọn định dạng. Đối với nhiều bộ lọc định dạng văn bản, thực sự không tốt khi ẩn hoàn toàn các hướng dẫn cho người ta biết cách sử dụng chúng. Các bộ lọc khác là tự động hơn. Tôi nghĩ rằng chúng ta cần một mô-đun cho phép chúng ta chọn những gì hiển thị cho người dùng cuối và những gì không.


0

Bạn cũng có thể sử dụng mô-đun ẩn định dạng .

Ẩn định dạng cho phép bạn thu gọn các menu thả xuống "định dạng văn bản" hoặc "định dạng đầu vào" để dọn sạch giao diện người dùng.


Đây là một mô-đun tuyệt vời nhưng nó làm cho hộp định dạng bị sụp đổ, không bị ẩn đi.
Druvision

0

Đối với Drupal 8. Điều này loại bỏ khu vực định dạng cho hai trường.

/**
 * Implements hook_form_FORM_ID_alter().
 */
function CUSTOM_MODULE_form_FORM_ID_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  $form['#after_build'][] = 'CUSTOM_MODULE_eform_application_after_build';
}

function CUSTOM_MODULE_eform_application_after_build ($form) {
  unset($form['field_experience']['widget'][0]['format']);
  unset($form['field_miscellaneous']['widget'][0]['format']);
  return ($form);
}

OP đã chỉ định D7 trong câu hỏi
Geoff

1
Đã đồng ý. Tuy nhiên, có rất ít trực tuyến cho D8 tại thời điểm này. Tôi cho rằng tôi có thể tự đặt câu hỏi và sau đó trả lời nó. Chưa bao giờ thử điều đó.
Andre Angelantoni

đó sẽ là cách tiếp cận tốt hơn, chỉ bởi vì OP trong trường hợp này rất cụ thể về phiên bản
Geoff

Bạn có thể vui lòng cho biết làm thế nào để thực hiện nó? Làm thế nào tôi có thể tìm thấy form_id?
John

0

Đối với Drupal 7, bạn có thể:

1) Sử dụng hook_theme_registry_alter(&$theme_registry)từ bên trong một mô-đun để thay đổi sổ đăng ký chủ đề, eq. định nghĩa bộ xử lý chủ đề.

2) Sau đó, thay đổi ba chức năng chủ đề theme_filter_tips, theme_filter_tips_more_infotheme_filter_guidelines, và buộc họ phải trở về không có gì. Như sau:

Đây là chức năng mục tiêu. Tất cả các chức năng chủ đề trên sẽ được chuyển hướng đến đó.

function _mymodule_filter_tips($tips, $long = FALSE, $extra = ''){
  return '';
}

/**
 * Implements hook_theme_registry_alter
 */
function mymodule_theme_registry_alter(&$theme_registry) {
  $theme_registry['filter_tips']['theme path'] = drupal_get_path( 'module', 'mymodule' );
  $theme_registry['filter_tips']['function'] = '_mymodule_filter_tips';
  $theme_registry['filter_guidelines']['theme path'] = drupal_get_path( 'module', 'mymodule' );
  $theme_registry['filter_guidelines']['function'] = '_mymodule_filter_tips';
  $theme_registry['filter_tips_more_info']['theme path'] = drupal_get_path( 'module', 'mymodule' );
  $theme_registry['filter_tips_more_info']['function'] = '_mymodule_filter_tips';
}

Khi bạn xóa bộ nhớ cache, Drupal sẽ tìm kiếm các định nghĩa bộ lọc đó trên đường dẫn của mô-đun bạn chọn (xem drupal_get_path) và không trả lại gì cho mỗi bộ lọc. Do đó, không có mô tả định dạng văn bản nhiều hơn.


0
/ hook_form_alter function
function CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
    // We want this on a specific node type
    if ($form_id == 'NODE_TYPE_node_form') {
        $form['#after_build'][] = 'CUSTOM_MODULE_NODE_TYPE_node_form_after_build';
    }
}

// afterbuild function
function CUSTOM_MODULE_NODE_TYPE_node_form_after_build($form) {

    // We want to hide input formats and we can do it like following
    $form['body']['und']['0']['format']= '<div style="display:none;">';
    $form['body']['und']['0']['format']= '</div>';   

    return $form;
}

Chủ yếu làm việc cho tôi với những thay đổi nhỏ này.

$form['body'][LANGUAGE_NONE][0]['format']['#prefix']<br>
$form['body'][LANGUAGE_NONE][0]['format']['#suffix']
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.