Giriş Biçimi Seçenekleri nasıl gizlenir ve bir textarea altındaki metin yardımcı olur mu?


32

Bir düğümü eklerken | Giriş Biçimi Seçeneklerini nasıl gizler ve bir metin altındaki metin nasıl yardım edilir?

Ekran görüntüsü - kırmızı dikdörtgen ile seçili gizlenecek parça


Forma erişirseniz yapabileceğinizi hook_form_alterancak ayrıntılardan emin olamadığımı düşünüyorum, bu yüzden bunu bir cevap olarak göndermeyeceğim ...
acm

Yanıtlar:


26

Drupal 7 için, Simplify modülünü kullanabilirsiniz . Metin Biçimi seçenekleri textarea'yı ve ayrıca düğüm formlarındaki diğer öğeleri gizlemenizi sağlar.


3
Kaynağına bakarsanız ( cgit.drupalcode.org/simplify/tree/simplify.module?id=7681b0e ), modül metin formatı seçeneklerini gizlemek için jQuery öğesini kullanır. Bu utanç verici çünkü 1: yalnızca metin biçimini gizlemek istiyorsunuz ve tüm modüle ihtiyacınız yok ve 2: javascript bir gereksinim haline geliyor. Neden Ionut Adrian Luchian'ın cevabının önerdiği gibi CSS ile gizlemiyorsunuz? Kesinlikle uygun ve temiz.
B2F

basitleştirmek benim için sürekli işe yaramadı. Bazı durumlarda başkalarında işe yaramadı.
snowguy

Benim için işe yaramadı. Bu yüzden bootstrap temasını kullandım.
sobi3ch

Basitleştirmek de benim için işe yaramadı.
Артем Ильин

25

Bunu yapmak için hook_form_alter'i özel bir modülde kullanabilirsiniz.

Örneğin, drupal 7'de:

// 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
bu işe yarıyor ama bir yan etkisi var: wysiwyg editörünü metin alanından kaldırıyor
castaway

Bu benim için hile yaptı. Ben sadece metin girişini temizlemek istedim.
RevNoah

1
'und' yerine LANGUAGE_NONE'dan bahsetmek daha iyidir ve ayrıca after_build işlevi, diğer üstün rollerin Metin Biçimi kutusunu görüntüleyebilmesi durumunda denetleme görevi üstlenmelidir.
Aneek Mukhopadhyay

12

Drupal 6'da tam olarak ne istiyorsan onu yapan daha iyi bir modül var, 7 sürümlü bir sürüm var ama yoğun bir şekilde geliştirilmekte olduğuna dair bir uyarıyla geliyor. Sitenizi hala geliştirme aşamasında ise, o zaman bir şans vermeye değer olabilir.


Yönetici olmayan kullanıcılar için iyi sonuç vermiş, yönetici grubunun izinlerini
kaldırsanız

D7 için daha iyi biçimler iyi çalışıyor, ciddi sorunlar olmadan kararlı ve Ocak 2016'da Beta 2 sürümü var.
Duncanmoo

9

Gerçekten sadece biçim form öğesini öldürebilirsiniz.

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, en iyi çözüm. Gelecekteki ziyaretçiler için, CUSTOM'u aktif tema adınızla değiştirin. Bu kod pasajı, etkin temanın klasöründeki template.php betiğinize gitmelidir. Sitenizde birden fazla dil seçeneği varsa, LANGUAGE_NONE ile dil kodunuzu değiştirin.
Janaka R Rajapaksha

2
CUSTOMözel tema adınız olarak tasarlanmıştır. You should ASLA etkin dil kullanımını gerekirse, bir dil sert kod global $language;bunu kapmak için.
doublejosh

Not: LANGUAGE_NONEdeğeri olan bir sabittir und... kullanmayın und.
doublejosh

Bu wysiwyg de öldürür
digitgopher 10:15

7

Bence en iyi çözüm, metin formatı seçim elemanına erişimi engellemek. Tamamen ayarladıysanız, kaybolan bir WYSIWYG editörü olarak istenmeyen yan etkilerle karşılaşacaksınız. Bu yüzden aşağıdaki kodu öneriyorum.

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

Bu, yalnızca belirli bir alana gizlemek istiyorsanız, mükemmel bir çözümdür. Ve WYSIWYG işlevsel kalır.
Dalin

6

En kolay yol olan CSS'yi kullanın. kundakçı

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

CSS ve Firebug'un gücü

İyi şanslar.


3
"Çalışmasına rağmen" CSS gizlemeyi tavsiye etmem.
saadlulu

bir cevap değil, kaçış
Pan Chrono

5
Niye ya ? Bu harika bir cevap çünkü soru onu kaldırmak değil gizlemek. Güvenlik tehdidine neden olacağını ya da SEO için kötü olacağını gizlemek gibi değil ... Zaten sorun nerede metin biçiminde yapılandırma izinleri tanımlayabilirsiniz?
B2F

1
Saklamayı tercih ederim. +1 oy size.
Alyssa Gono

css enjektör modülü harikalar yaratıyor. bakınız: prntscr.com/cieuvs
Patoshi,

5

Drupal 7 İÇİN

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

Çok / tüm alanlarda gizlemek istiyorsanız, bu harika bir tekniktir.
Dalin

2

Giriş formatı seçeneğini gizlemenin başka bir basit yolu, seçeneği gizlemek istediğiniz kullanıcı profillerinden diğer tüm giriş formatlarını kaldırmaktır. Bunun için admin-> configuration-> input formatlarına gidin ve varsayılan olarak vermek istediğiniz hariç tüm kullanıcı rollerini diğer tüm formatlardan kaldırın.


6
Yalnızca, yalnızca düz metni etkinleştirmek istiyorsanız çalışır. Çünkü bunu devre dışı bırakamazsın.
Fletch

kesinlikle. Sadece "Filtrelenmiş Metin" olamaz. Üzgünüz, ama bu cevap yanıltıcıdır.
nerdoc,

2

Bunu ben yaptım:

Denetlenmemiş "Filtrelenmiş HTML metin biçimini kullanın" ve "İsimsiz ve yetkili kullanıcılar için CKeditor kullanamayacakları için kişilerin izinlerinden" Metin biçimlerini ve filtreleri yönetme "seçeneğini işaretleyin.

Tabii ki CSS'den "display: none;" Belirli bir div sınıfı için (.filter-wrapper)


1

CSS Enjektör modülünü takın (şu anda Drupal 8 için yalnızca bir çalışma geliştirme sürümü var).

Ardından CSS Enjektörünün (/ admin / config / development / css-injector) yönetim sayfasına gidin. Bu kodla (veya biçimlendirme alanı metni sınıfına uygulanan herhangi bir kodla) yeni bir CSS kuralı oluşturun:

.filter-guidelines {
    display: none;
}

Üzerinde uygulamak için seçin Yedi tema (veya kullanımda herhangi yönetici teması). Kaydet ve tadını çıkar!


Css enjektörü 1.x'i 2.0 yaşlandıkça takın. Nasıl göründüğünün bir önizlemesi: prntscr.com/cieuvs - Bu modül CPN gibi diğer modüllere karşı css enjeksiyonu için harikalar yaratıyor (düğüm başına kod)
Patoshi パ ト シ 15:16

0

"Düz metin" giriş biçimini kaldıramazsınız. Ve "Düz Metin" giriş biçimini kullandığınızda RTE gösterilmiyor.

CSS seçeneğini kullanacağım.


Giriş formatı seçicisi, oturum açmış kullanıcı sadece bir giriş formatı kullanabildiğinde görünmüyor; bu tek giriş formatı farklı olabilir ve seçici aynı görünmeyecektir.
kiamlaluno

0

Hem "diğer tüm giriş biçimlerini kullanıcı profillerinden kaldırmayı" hem de css yolunu kullanıyorum.


0

Basitleştirilmiş modülü deneyin .

Basitleştir, belirli alanların kullanıcı arayüzünden gizlenmesini sağlar. Bu, formların dağınıklığına ve içerik düzenleyicilerine daha kullanıcı dostu bir deneyim sunmaya yardımcı olur.


diğer alanlara yönelik işleri basitleştirin, ancak giriş biçimleri için çalışmasını sağlayamadım.
13:30

0

Biçimleri gizlemek ancak hala kullanılabilir durumda tutmak istiyorsanız, " Basitleştirilmiş biçimler " modülünü deneyin : https://www.drupal.org/project/simplified_formats

Format seçimi açılır kutusunun yanındaki küçük bir soru işareti simgesindeki format ayrıntılarını gizler. Birçok metin formatı filtresi için, bir tanesinin bunları nasıl kullanacağını anlatan talimatları tamamen gizlemesinin faydası yoktur. Diğer filtreler daha otomatik. Son kullanıcıya neyin gösterildiğini ve neyin gelmeyeceğini seçmemizi sağlayan bir modüle ihtiyacımız olduğunu düşünüyorum.


0

Formatları gizle modülünü de kullanabilirsiniz .

Formatları Gizle, kullanıcı arayüzünü temizlemek için "metin formatı" veya "giriş formatı" açılır pencerelerini daraltmanıza izin verir.


Bu harika bir modül ama format kutusunu gizli tutmuyor, daraltıyor.
Druvision

0

Drupal 8 için. Bu, iki alanın format alanını kaldırır.

/**
 * 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, soruda D7'yi belirtti
Geoff

1
Kabul. Ancak, bu noktada D8 için çok az çevrimiçi var. Sanırım kendi sorumu kendim yapabilir ve sonra cevaplayabilirim. Bunu hiç denemedim.
Andre Angelantoni

bu daha iyi bir yaklaşım olacaktır, çünkü bu durumda OP sürümü hakkında çok spesifiktir
Geoff

Lütfen nasıl uygulanacağını belirtir misiniz? Form_id'yi nasıl bulabilirim?
john

0

Drupal 7 için şunları yapabilirsiniz:

1) Kullanım hook_theme_registry_alter(&$theme_registry) Tema kayıt defterini değiştirmek için bir modül içinde ; Tema işlemcileri tanımı.

2) Daha sonra değiştirmek üç tema fonksiyonları, theme_filter_tips, theme_filter_tips_more_infovetheme_filter_guidelines , ve hiçbir şey dönmeye zorlamak. Aşağıdaki gibi:

Bu hedef fonksiyondur. Yukarıdaki tema fonksiyonlarının tümü buna yönlendirilecektir.

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

Önbelleğinizi temizlediğinizde, Drupal, seçtiğiniz modül yolunda bu filtre tanımlarını arayacaktır (bakınız drupal_get_path) ve her filtre için hiçbir şey döndürmeyecektir. Dolayısıyla, artık metin biçimi açıklamaları yoktur.


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

Çoğunlukla bu küçük değişikliklerle benim için çalıştı.

$form['body'][LANGUAGE_NONE][0]['format']['#prefix']<br>
$form['body'][LANGUAGE_NONE][0]['format']['#suffix']
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.