Bagaimana cara menyembunyikan Opsi Format Input dan membantu teks di bawah textarea?


32

Bagaimana cara menyembunyikan Opsi Format Input dan membantu teks di bawah textarea saat menambahkan | mengedit node?

Tangkapan layar - bagian yang akan disembunyikan dipilih dengan persegi panjang merah


Saya pikir Anda dapat melakukannya jika Anda mengakses formulir melalui hook_form_alternamun saya tidak yakin tentang detailnya, jadi saya tidak akan memposting ini sebagai jawaban ...
acm

Jawaban:


26

Untuk Drupal 7, Anda dapat menggunakan modul Sederhanakan . Ini memungkinkan Anda untuk menyembunyikan opsi Format Teks textarea, serta elemen lain pada bentuk simpul.


3
Jika Anda melihat sumbernya ( cgit.drupalcode.org/simplify/tree/simplify.module?id=7681b0e ), modul menggunakan jQuery untuk menyembunyikan opsi format teks. Ini memalukan karena 1: Anda hanya ingin menyembunyikan format teks dan tidak perlu seluruh modul dan 2: javascript menjadi persyaratan. Mengapa tidak menyembunyikannya dengan CSS seperti saran Ionut Adrian Luchian? Ini pasti tepat dan bersih.
B2F

Menyederhanakan tidak bekerja secara konsisten untuk saya. dalam beberapa kasus itu berhasil pada yang lain tidak.
snowguy

Tidak bekerja untuk saya. Saya telah menggunakan tema bootstrap jadi mungkin karena itu.
sobi3ch

Menyederhanakan tidak bekerja untuk saya juga.
Артем Ильин

25

Anda dapat menggunakan hook_form_alter dalam modul khusus untuk melakukan ini.

Misalnya, dalam 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
ini berfungsi tetapi memiliki efek samping: menghapus editor wysiwyg dari area teks
terbuang

Itu berhasil bagi saya. Saya terutama hanya ingin membersihkan input teks.
RevNoah

1
lebih baik menyebutkan LANGUAGE_NONE alih-alih 'und' dan juga fungsi after_build harus memiliki pengecekan berbasis peran jika peran superior lainnya dapat melihat kotak Format Teks.
Aneek Mukhopadhyay

12

Di drupal 6 ada modul Better Format yang melakukan persis apa yang Anda inginkan, ada versi 7 dev tetapi ia datang dengan peringatan bahwa itu sedang dalam pengembangan. Jika situs Anda masih dalam pengembangan maka mungkin ada baiknya mencobanya.


Tampaknya berfungsi dengan baik untuk pengguna yang bukan admin, bahkan jika Anda menghapus izin untuk grup admin, pengguna 1 masih akan melihat opsi di D7
joelpittet

Format yang lebih baik berfungsi dengan baik untuk D7, stabil tanpa masalah serius dan rilis Beta 2 pada Januari 2016.
Duncanmoo

9

Anda benar-benar bisa membunuh item format saja.

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, solusi terbaik. Untuk pengunjung masa depan, ganti CUSTOM dengan nama tema aktif Anda. Cuplikan kode ini harus ada di skrip template.php Anda di folder tema aktif. Dan jika situs Anda telah mengaktifkan multi bahasa, ganti LANGUAGE_NONE dengan kode bahasa Anda.
Janaka R Rajapaksha

2
CUSTOMdimaksudkan sebagai nama tema khusus Anda. Anda harus TIDAK PERNAH membuat kode bahasa yang sulit, jika Anda membutuhkan bahasa yang aktif global $language;untuk menggunakannya .
doublejosh

Catatan: LANGUAGE_NONEadalah konstanta dengan nilai und... jangan gunakan und.
doublejosh

Ini membunuh wysiwyg juga
digitgopher

7

Saya pikir solusi terbaik adalah, untuk melarang akses ke elemen pemilihan format teks. Jika Anda benar-benar menghapusnya, Anda akan menghadapi efek samping yang tidak diinginkan sebagai editor WYSIWYG yang menghilang. Jadi saya mengusulkan kode berikut.

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;
}

Ini adalah solusi yang sangat baik jika Anda hanya ingin menyembunyikannya di satu bidang tertentu. Dan WYSIWYG tetap fungsional.
Dalin

6

Gunakan CSS, cara termudah. Pembakar

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

Kekuatan CSS dan Firebug

Semoga berhasil.


3
Saya tidak akan merekomendasikan "walaupun berhasil" menyembunyikan CSS.
saadlulu

bukan jawaban, liburan
Pan Chrono

5
Mengapa Ini adalah jawaban yang bagus karena pertanyaannya adalah menyembunyikannya, bukan menghapusnya. Ini tidak seperti menyembunyikannya akan menyebabkan ancaman keamanan atau buruk untuk SEO ... Anda sudah mendefinisikan izin dalam konfigurasi format teks jadi di mana masalahnya?
B2F

1
Saya lebih suka menyembunyikannya. Beri suara +1 untuk Anda.
Alyssa Gono

Modul injektor css bekerja sangat baik. lihat: prntscr.com/cieuvs
Patoshi パ ト シ

5

UNTUK 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;
}

Ini adalah teknik hebat jika Anda ingin menyembunyikannya di banyak / semua bidang.
Dalin

2

Cara sederhana lain untuk menyembunyikan opsi format input adalah menghapus semua format input lainnya dari profil pengguna yang ingin Anda sembunyikan opsi. Untuk ini, buka admin-> konfigurasi-> format input dan hapus semua peran pengguna dari semua format input lain kecuali yang ingin Anda berikan secara default.


6
Hanya berfungsi jika Anda hanya ingin mengaktifkan teks biasa. Karena Anda tidak dapat menonaktifkan yang itu.
Fletch

persis. Anda tidak dapat memiliki "Teks yang Difilter" saja. Maaf, tapi jawaban ini menyesatkan.
nerdoc

2

Saya melakukan ini:

Hapus tanda centang "Gunakan format teks HTML yang difilter" dan "kelola format dan filter teks" dari izin> orang untuk pengguna anonim dan resmi sehingga mereka tidak bisa menggunakan CKeditor.

Tentu saja Anda dapat menonaktifkannya dari CSS dengan "display: none;" untuk kelas div tertentu (ini .filter-wrapper) dan sembunyikan semua area yang Anda tunjuk ke atas tetapi dalam kasus ini area tersebut disembunyikan untuk semua orang termasuk superuser.


1

Instal modul CSS Injector (saat ini hanya ada versi pengembangan yang berfungsi untuk Drupal 8).

Kemudian pergi ke halaman administrasi CSS Injector (/ admin / config / development / css-injector). Buat aturan CSS baru dengan kode ini (atau kode apa pun yang berlaku untuk kelas teks area formating):

.filter-guidelines {
    display: none;
}

Pilih untuk menerapkannya pada tema Tujuh (atau tema admin apa pun yang digunakan). Simpan dan nikmatilah!


Instal css injector 1.x saat 2.0 lebih tua. Berikut ini pratinjau tampilannya: prntscr.com/cieuvs - Modul ini bekerja sangat baik untuk injeksi css vs modul lain seperti CPN (kode per simpul)
Patoshi パ ト シ

0

Anda tidak dapat menghapus format input "Teks biasa". Dan RTE tidak muncul ketika Anda menggunakan format input "Teks Biasa".

Saya akan menggunakan opsi CSS.


Pemilih format input tidak muncul ketika pengguna yang saat ini login hanya dapat menggunakan format input; format masukan tunggal itu bisa berbeda, dan pemilih tidak akan muncul sama.
kiamlaluno

0

Saya menggunakan "menghapus semua format input lainnya dari profil pengguna" dan cara css.


0

Coba sederhanakan modul.

Sederhanakan memungkinkan bidang tertentu disembunyikan dari antarmuka pengguna. Ini membantu untuk mengacaukan formulir dan menghadirkan pengalaman yang lebih ramah pengguna kepada editor konten.


menyederhanakan pekerjaan untuk bidang lain, tapi saya tidak bisa membuatnya berfungsi untuk format input.
Druvision

0

Jika Anda ingin menyembunyikan format tetapi tetap menyediakannya, cobalah modul " Format sederhana ": https://www.drupal.org/project/simplified_formats

Ini menyembunyikan detail format dalam ikon tanda tanya kecil di sebelah dropdown pemilihan format. Untuk banyak filter format teks, benar-benar tidak ada gunanya menyembunyikan instruksi yang memberi tahu seseorang cara menggunakannya. Filter lain lebih otomatis. Saya pikir kita memerlukan modul yang memungkinkan kita untuk memilih apa yang muncul hingga pengguna akhir dan apa yang tidak.


0

Anda juga dapat menggunakan modul Sembunyikan format .

Sembunyikan Format memungkinkan Anda untuk menutup dropdown "format teks" atau "format input" untuk membersihkan UI.


Ini adalah modul yang bagus tetapi membuat kotak format runtuh, tidak tersembunyi secara lisan.
Druvision

0

Untuk Drupal 8. Ini menghapus area format untuk dua bidang.

/**
 * 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 menentukan D7 dalam pertanyaan
Geoff

1
Sepakat. Namun, ada sangat sedikit online untuk D8 pada saat ini. Saya kira saya bisa membuat pertanyaan saya sendiri dan kemudian menjawabnya. Belum pernah mencobanya.
Andre Angelantoni

itu akan menjadi pendekatan yang lebih baik, hanya karena OP dalam kasus ini sangat spesifik tentang versi
Geoff

Bisakah Anda menunjukkan bagaimana menerapkannya? Bagaimana saya bisa menemukan form_id?
john

0

Untuk Drupal 7, Anda dapat:

1) Gunakan hook_theme_registry_alter(&$theme_registry)dari dalam modul untuk mengubah tema registri, mis. definisi prosesor tema.

2) Kemudian mengubah tiga fungsi tema, theme_filter_tips, theme_filter_tips_more_info, dan theme_filter_guidelines, dan memaksa mereka untuk kembali apa-apa. Sebagai berikut:

Ini adalah fungsi target. Semua fungsi tema di atas akan diarahkan ke sana.

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';
}

Saat Anda menghapus cache, Drupal akan mencari definisi filter tersebut di jalur modul pilihan Anda (lihat drupal_get_path), dan tidak mengembalikan apa pun untuk setiap filter. Karenanya, tidak ada lagi deskripsi format teks.


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;
}

Sebagian besar bekerja untuk saya dengan perubahan kecil ini.

$form['body'][LANGUAGE_NONE][0]['format']['#prefix']<br>
$form['body'][LANGUAGE_NONE][0]['format']['#suffix']
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.