इनपुट प्रारूप विकल्पों को कैसे छिपाएं और एक textarea के तहत पाठ की मदद करें?


32

एक नोड को जोड़ने पर एक टेक्स्टारिया के तहत इनपुट प्रारूप विकल्पों को छिपाने और पाठ की मदद करने के लिए कैसे?

स्क्रीनशॉट - लाल आयत के साथ चयनित छिपाने के लिए हिस्सा


मुझे लगता है कि आप यह कर आप के माध्यम से फ़ॉर्म को एक्सेस करता है, तो कर सकते हैं hook_form_alterलेकिन मैं कर रहा हूँ यकीन नहीं है, तो विवरण के बारे में मैं एक जवाब के रूप में इस पोस्ट नहीं होगा ...
ACM

जवाबों:


26

Drupal 7 के लिए, आप सरलीकृत मॉड्यूल का उपयोग कर सकते हैं । यह आपको पाठ प्रारूप विकल्पों को छिपाने के लिए अनुमति देता है textarea, साथ ही नोड रूपों पर अन्य तत्व।


3
यदि आप इसके स्रोत ( cgit.drupalcode.org/simplify/tree/simplify.module?id=7681b0e ) को देखते हैं, तो पाठ प्रारूप विकल्पों को छिपाने के लिए मॉड्यूल jQuery का उपयोग करता है। यह शर्म की बात है क्योंकि 1: आप केवल पाठ प्रारूप को छिपाना चाहते हैं और पूरे मॉड्यूल की आवश्यकता नहीं है और 2: जावास्क्रिप्ट एक आवश्यकता बन जाती है। सिर्फ सीएसएस के साथ इसे क्यों नहीं छिपाएं जैसे कि इयोनुत एड्रियन लुचियन का जवाब बताता है? यह निश्चित रूप से उचित और साफ है।
बी

सरलीकृत मेरे लिए लगातार काम नहीं किया। कुछ मामलों में यह दूसरों में काम नहीं किया।
बर्फीली

मेरे लिए काम नहीं किया। मैंने बूटस्ट्रैप थीम का उपयोग किया है इसलिए शायद इसकी वजह से।
sobi3ch

सरलीकृत मेरे लिए भी काम नहीं किया।
Артем Ильин

25

ऐसा करने के लिए आप कस्टम मॉड्यूल में hook_form_alter का उपयोग कर सकते हैं।

उदाहरण के लिए, ड्रुपल 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
यह काम करता है लेकिन एक साइड इफेक्ट है: यह पाठ क्षेत्र से wysiwyg संपादक को हटा देता है
कास्टअवे

यही मेरे लिए चाल चली। मैं मुख्य रूप से केवल पाठ इनपुट को साफ करना चाहता था।
रेवन्नोह

1
इसके बजाय 'und' के बजाय LANGUAGE_NONE का उल्लेख करना बेहतर है और इसके बाद के कार्य में अन्य श्रेष्ठ भूमिकाएँ पाठ स्वरूप बॉक्स को देखने की स्थिति में भूमिका आधारित जाँच होनी चाहिए।
ऐक मुखोपाध्याय

12

ड्रुपल 6 में मॉड्यूल बेहतर प्रारूप है जो वास्तव में वही करता है जो आप चाहते हैं, एक 7 देव संस्करण है लेकिन यह एक चेतावनी के साथ आता है कि यह भारी विकास के अधीन है। यदि आप साइट अभी भी विकास में हैं तो यह एक शॉट देने के लायक हो सकता है।


उन उपयोगकर्ताओं के लिए अच्छी तरह से काम करने के लिए आया था जो व्यवस्थापक नहीं थे, भले ही आप व्यवस्थापक समूह के लिए अनुमतियों को हटा दें, फिर भी उपयोगकर्ता 1 को D7 में विकल्प दिखाई देंगे
joelpittet

बेहतर प्रारूपों D7 के लिए अच्छी तरह से काम करता है, कोई गंभीर मुद्दों और जनवरी 2016 में एक बीटा 2 रिलीज के साथ स्थिर है
Duncanmoo

9

आप वास्तव में सिर्फ फॉर्म फॉर्म आइटम को मार सकते हैं।

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, सबसे अच्छा समाधान। भविष्य के आगंतुकों के लिए, अपने सक्रिय विषय के नाम के साथ कस्टम को बदलें। यह कोड स्निपेट आपके टेम्पलेट में जाना चाहिए। सक्रिय थीम के फ़ोल्डर में स्क्रिप्ट। और यदि आपकी साइट ने बहुभाषी के लिए सक्षम किया है, तो LANGUAGE_NONE को अपने भाषा कोड से बदलें।
जनक आर राजपक्ष

2
CUSTOMआपका कस्टम थीम नाम के रूप में इरादा है। आप चाहिए कभी आप सक्रिय भाषा के प्रयोग की जरूरत है अगर एक भाषा कठिन कोड, global $language;यह हड़पने के लिए।
डबलजॉश

नोट: LANGUAGE_NONEमान के साथ एक स्थिर है und... का उपयोग न करें und
डबलजोश

इस wysiwyg को भी मारता है
अंक

7

मुझे लगता है कि सबसे अच्छा समाधान पाठ प्रारूप चयन तत्व तक पहुंच को समाप्त करना है। यदि आप इसे पूरी तरह से अनसुना कर देते हैं, तो आप गायब होने वाले WYSIWYG संपादक के रूप में अवांछित दुष्प्रभावों का सामना करेंगे। इसलिए मैं निम्नलिखित कोड प्रस्तावित करता हूं।

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

यह एक उत्कृष्ट समाधान है यदि आप केवल एक विशेष क्षेत्र पर इसे छिपाना चाहते हैं। और WYSIWYG कार्यात्मक रहता है।
Dalin

6

सबसे आसान तरीका सीएसएस का उपयोग करें। Firebug

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

CSS और Firebug की शक्ति

सौभाग्य।


3
मैं सलाह नहीं देता "हालांकि यह काम करता है" सीएसएस छिपाना।
सादुलु

जवाब नहीं, एक भगदड़
पैन क्रोनो

5
क्यूं कर ? यह एक महान जवाब है क्योंकि सवाल इसे छिपाने के लिए है, इसे हटाने के लिए नहीं। यह छिपाने की तरह नहीं है कि यह सुरक्षा के लिए खतरा होगा या एसईओ के लिए बुरा होगा ... आप पहले से ही पाठ प्रारूप कॉन्फ़िगरेशन में अनुमतियों को परिभाषित करते हैं तो समस्या कहां है?
बी

1
मैं इसे छिपाना पसंद करूंगा। आप के लिए +1 वोट।
एलिसा गोनो

सीएसएस इंजेक्टर मॉड्यूल अद्भुत काम करता है। देखें: prntscr.com/cieuvs
पाटोशी ト シ 'n

5

द्रुपाल के लिए 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;
}

यदि आप इसे कई / सभी क्षेत्रों पर छिपाना चाहते हैं तो यह एक शानदार तकनीक है।
Dalin

2

इनपुट प्रारूप विकल्प को छिपाने का एक और सरल तरीका उस उपयोगकर्ता प्रोफाइल से अन्य सभी इनपुट प्रारूप को हटा रहा है जिसे आप विकल्प छिपाना चाहते हैं। इसके लिए, व्यवस्थापक-> कॉन्फ़िगरेशन-> इनपुट प्रारूप पर जाएं और डिफ़ॉल्ट रूप से आप जो देना चाहते हैं, उसे छोड़कर अन्य सभी इनपुट प्रारूप से सभी उपयोगकर्ता भूमिकाएं हटा दें।


6
केवल तभी काम करता है जब आप केवल सादे पाठ को सक्षम करना चाहते हैं। क्योंकि आप उस एक को अक्षम नहीं कर सकते।
फ्लेच

ठीक ठीक। आपके पास केवल "फ़िल्टर किए गए पाठ" नहीं हो सकते। क्षमा करें, लेकिन यह उत्तर भ्रामक है।
nerdoc 21

2

इसे मैने किया है:

अनाम और अधिकृत उपयोगकर्ताओं के लिए अनियंत्रित "फ़िल्टर किए गए HTML पाठ प्रारूप का उपयोग करें" और "पाठ प्रारूप और लोगों को प्रशासित करें"> ताकि वे CKeditor का उपयोग न कर सकें।

बेशक आप इसे सीएसएस से "प्रदर्शन: कोई नहीं?" विशेष रूप से दिव्यांग वर्ग के लिए (यह .filter-आवरण) है और आपके द्वारा ऊपरी क्षेत्र को इंगित करने वाले सभी क्षेत्र को छिपाया जाता है, लेकिन इस मामले में यह क्षेत्र सभी के लिए छिपा हुआ है जिसमें सुपरयुसर भी शामिल है।


1

CSS इंजेक्टर मॉड्यूल स्थापित करें (वर्तमान में Drupal 8 के लिए केवल एक कार्यशील विकास संस्करण है)।

फिर CSS इंजेक्टर (/ admin / config / development / css-injection) के एडमिनिस्ट्रेशन पेज पर जाएं। इस कोड के साथ एक नया सीएसएस नियम बनाएं (या किसी भी कोड जो फॉर्मेटिंग एरिया टेक्स्ट के एक वर्ग पर लागू होता है):

.filter-guidelines {
    display: none;
}

इसे सेवन थीम (या उपयोग में किसी भी व्यवस्थापक थीम) पर लागू करना चुनें । सहेजें और आनंद लें!


2.0 की उम्र के रूप में css इंजेक्टर 1.x स्थापित करें। यह कैसे दिखता है, इसका एक पूर्वावलोकन यहाँ है: prntscr.com/cieuvs - यह मॉड्यूल css इंजेक्शन बनाम CPN जैसे अन्य मॉड्यूल (नोड प्रति कोड) के लिए अद्भुत काम करता है
Patoshi パ ト

0

आप "सादा पाठ" इनपुट प्रारूप नहीं निकाल सकते। और आरटीई नहीं दिखा रहा है जब आप "प्लेन टेक्स्ट" इनपुट प्रारूप का उपयोग करते हैं।

मैं CSS विकल्प का उपयोग करूंगा।


इनपुट प्रारूप चयनकर्ता तब दिखाई नहीं दे रहा है जब वर्तमान में लॉग-इन उपयोगकर्ता बस एक इनपुट प्रारूप का उपयोग कर सकता है; वह एकमात्र इनपुट प्रारूप एक अलग हो सकता है, और चयनकर्ता समान नहीं दिखाई देगा।
kiamlaluno

0

मैं "उपयोगकर्ता प्रोफाइल से अन्य सभी इनपुट प्रारूप को हटाने" और सीएसएस तरीके से दोनों का उपयोग करता हूं।


0

मॉड्यूल को सरल बनाने का प्रयास करें ।

सरलीकरण उपयोगकर्ता इंटरफ़ेस से विशेष क्षेत्रों को छिपाने की अनुमति देता है। यह रूपों को अव्यवस्थित करने और सामग्री संपादकों के लिए अधिक उपयोगकर्ता के अनुकूल अनुभव प्रस्तुत करने में मदद करता है।


अन्य क्षेत्रों के लिए काम को आसान बनाता है, लेकिन मैं इसे इनपुट प्रारूपों के लिए काम नहीं कर सका।
ड्रूविजन

0

यदि आप स्वरूपों को छिपाना चाहते हैं, लेकिन फिर भी उन्हें उपलब्ध रखना चाहते हैं, तो " सरलीकृत प्रारूप " मॉड्यूल आज़माएं : https://www.drupal.org/project/simplified_formats

यह प्रारूप चयन ड्रॉपडाउन के बगल में थोड़ा प्रश्न चिह्न आइकन में प्रारूप विवरण छिपाता है। कई टेक्स्ट फॉर्मेट फिल्टर्स के लिए यह वास्तव में उन निर्देशों को पूरी तरह से छिपाने के लिए अच्छा नहीं है जो एक का उपयोग करने का तरीका बताते हैं। अन्य फ़िल्टर अधिक स्वचालित हैं। मुझे लगता है कि हमें एक मॉड्यूल की आवश्यकता है जो हमें यह चुनने की अनुमति देता है कि अंतिम उपयोगकर्ता को क्या दिखाता है और क्या नहीं।


0

आप हाईड फॉर्मेट मॉड्यूल का भी उपयोग कर सकते हैं ।

छुपाएँ स्वरूप आपको यूआई को साफ करने के लिए "पाठ प्रारूप" या "इनपुट प्रारूप" ड्रॉपडाउन को समाप्त करने की अनुमति देता है।


यह एक बेहतरीन मॉड्यूल है, लेकिन यह फॉर्म्स बॉक्स को ढह जाता है, न कि टोली को छिपाया जाता है।
ड्रयूविज़न

0

Drupal 8. के ​​लिए यह दो क्षेत्रों के लिए प्रारूप क्षेत्र को निकालता है।

/**
 * 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);
}

ओपी ने प्रश्न में डी 7 निर्दिष्ट किया
ज्योफ

1
माना। हालांकि, इस बिंदु पर डी 8 के लिए बहुत कम ऑनलाइन है। मुझे लगता है कि मैं अपना सवाल बना सकता हूं और फिर इसका जवाब दूंगा। कभी कोशिश नहीं की।
आंद्रे एंजेलेंटोनी

यह बेहतर दृष्टिकोण होगा, केवल इसलिए कि इस मामले में ओपी संस्करण के बारे में बहुत विशिष्ट है
ज्योफ

क्या आप कृपया बता सकते हैं कि इसे कैसे लागू किया जाए? मैं form_id कैसे खोज सकता हूं?
जॉन

0

Drupal 7 के लिए, आप कर सकते हैं:

1) hook_theme_registry_alter(&$theme_registry)विषय रजिस्ट्री, eq को बदलने के लिए एक मॉड्यूल के भीतर से उपयोग करें । विषय प्रोसेसर परिभाषा।

2) इसके बाद तीन विषय कार्यों में परिवर्तन, theme_filter_tips, theme_filter_tips_more_info, और theme_filter_guidelines, और उन्हें कुछ भी नहीं लौटने के लिए बाध्य करते हैं। निम्नलिखित नुसार:

यह लक्ष्य समारोह है। उपरोक्त सभी थीम फ़ंक्शंस को पुनर्निर्देशित किया जाएगा।

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

जब आप अपना कैश साफ़ करते हैं, तो Drupal आपकी पसंद के मॉड्यूल के पथ पर उन फ़िल्टर परिभाषाओं की तलाश करेगा (देखें drupal_get_path), और प्रत्येक फ़िल्टर के लिए कुछ भी नहीं लौटाएगा। इसलिए, कोई और पाठ प्रारूप विवरण नहीं।


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

ज्यादातर मेरे लिए इन छोटे बदलावों के साथ काम किया।

$form['body'][LANGUAGE_NONE][0]['format']['#prefix']<br>
$form['body'][LANGUAGE_NONE][0]['format']['#suffix']
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.