परिवर्तित HTML टैग्स: टेक्स्ट इनपुट क्षेत्र में मदद के लिए @tags


11

मैं उस फ़ील्ड के लिए सहायता पाठ के भाग के रूप में एक साधारण फ़ील्ड प्रदर्शित करना चाहता हूं (फ़ाइल फ़ील्ड सटीक होना)। क्या मैं पूरी तरह से मानसिक हूं या वास्तव में इस पाठ क्षेत्र के लिए अनुमत HTML टैग को बदलने का कोई आसान तरीका नहीं है? फिलहाल मैंने प्रदर्शित किया है:

Instructions to present to the user below this field on the editing form. Allowed HTML tags: a b big code del em i ins pre q small span strong sub sup tt ol ul li p br img

यदि कोई आसान तरीका नहीं है, तो इसे करने का अगला सबसे आसान तरीका क्या है?

अपडेट करें:

क्लाइव ने एक शानदार मॉड्यूल के साथ इसे नीचे करने का एक शानदार तरीका पेश किया। आप पाठ को इस प्रकार जोड़ने के लिए ctools का उपयोग करके इसे भी जोड़ सकते हैं:

// Implement hook_field_widget_form_alter()
function MYMODULE_field_widget_form_alter(&$element, &$form_state, &$context) {
  // If some condition is matched based on the element provided...
  if (isset($element[0]) && $element[0]['#field_name'] == 'field_test') {
    // Alter the description using your more permissive set of tags
    $reworked = filter_xss($context['instance']['description'], _MYMODULE_field_filter_xss_allowed_tags());
    $element[0]['#description'] = theme('ctools_collapsible', array('handle' => 'Help text', 'content' => $reworked, 'collapsed' => TRUE));
  }
}

// Provide a more permissive set of tags to be used with filter_xss()
function _MYMODULE_field_filter_xss_allowed_tags() {
  // Merge the new set of allowed tags with the less permissive defaults
  $new_tags = array('table', 'thead', 'tbody', 'tfoot', 'tr', 'th', 'td');
  return array_merge(_field_filter_xss_allowed_tags(), $new_tags);
}

क्या आप एक पाठ क्षेत्र (प्रश्न का शीर्षक) या फ़ाइल क्षेत्र (प्रश्न का विवरण) के बारे में बात कर रहे हैं।
googletorp

@ 7wonders क्या आप सवाल में जोड़ा जवाब के रूप में अच्छा होगा।
kiamlaluno

जवाबों:


7

यह वास्तव में करने का एक आसान तरीका नहीं है, अनुमत टैग की सूची को _field_filter_xss_allowed_tags()फ़ंक्शन में हार्ड कोडित किया गया है

यह बदले में कहा जाता है field_filter_xss(), जब डेटा डेटाबेस में सहेजा नहीं जाता है , बल्कि जब यह प्रदर्शित होता है field_default_form()

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

इन पंक्तियों के साथ कुछ:

// Implement hook_field_widget_form_alter()
function MYMODULE_field_widget_form_alter(&$element, &$form_state, &$context) {
  // If some condition is matched based on the element provided...
  if (isset($element[0]) && $element[0]['#field_name'] == 'field_test') {
    // Alter the description using your more permissive set of tags
    $element[0]['#description'] = filter_xss($context['instance']['description'], _MYMODULE_field_filter_xss_allowed_tags());
  }
}

// Provide a more permissive set of tags to be used with filter_xss()
function _MYMODULE_field_filter_xss_allowed_tags() {
  // Merge the new set of allowed tags with the less permissive defaults
  $new_tags = array('table', 'thead', 'tbody', 'tfoot', 'tr', 'th', 'td');
  return array_merge(_field_filter_xss_allowed_tags(), $new_tags);
}

यह उस आधार पर है जिसे आप केवल एक तत्व के लिए नए टैग की अनुमति देना चाहते हैं field_test, जाहिर है, यदि आप अन्य क्षेत्रों के लिए भी ऐसा ही करना चाहते हैं तो आपको एक अलग स्थिति से मिलान करने के लिए इसे बदलने की आवश्यकता होगी। मैं आपके रूप परिवर्तन फ़ंक्शन में ऑब्जेक्ट का निरीक्षण करने dpm()के Devel moduleलिए शामिल उत्कृष्ट फ़ंक्शन का उपयोग करने की सलाह देता हूं ।

मैंने अभी ऊपर परीक्षण किया है और यह काम करता है (अब मेरे पास एक मेज है जहां मेरा फ़ाइल फ़ील्ड विवरण सामान्य रूप से होगा), यह एक हैक की तरह थोड़ा सा महसूस होता है, भले ही यह तकनीकी रूप से नियमों से चिपका हो, लेकिन उम्मीद है कि यह आपको मिलेगा। मार्ग।


इसने पूरी तरह से काम किया। किसी को निश्चित रूप से इसे ठीक से करने के लिए एक मॉड्यूल बनाना चाहिए (यह कैसे एक मुख्य विशेषता हो सकती है मुझे नहीं पता!)।
7 वंडर्स

@ 7wonders हाँ, निश्चित रूप से ऐसा लगता है कि एक अवसर चूक गया है, लेकिन मुझे लगता है कि डेवलपर्स के दृष्टिकोण से यह वास्तव में फ़ील्ड मॉड्यूल को अपने स्वयं के पाठ प्रारूप को बनाए रखने का मतलब होगा और जिसे ओवरकिल माना जा सकता है। इसे बदलने के लिए एक कस्टम विकल्प हालांकि अच्छा होता। मैं एक और अधिक उपयोगी मॉड्यूल में इस बदल सकता है और वास्तव में Drupal.org पर पोस्ट, आप तैनात रहेंगे होगा :)
क्लाइव

एक अच्छे विचार की तरह लगता है। मुझे बताएं कि आपको सैंडबॉक्स कब मिला और मैं खुशी-खुशी इसका परीक्षण करूंगा।
7wonders

2

यदि आप D6 का उपयोग कर रहे हैं, तो आप / व्यवस्थापक / सेटिंग्स / फ़िल्टर पर नेविगेट कर सकते हैं। वहां आपको "फ़िल्टर किए गए HTML" के "कॉन्फ़िगर" विकल्प पर क्लिक करने की आवश्यकता है। फिर कॉन्फ़िगर टैब पर क्लिक करें। आपको "स्वीकृत HTML टैग" नामक एक पाठ बॉक्स के साथ प्रस्तुत किया जाएगा। HTML टैग्स डालें जिन्हें आपको वहां उपयोग करने की आवश्यकता है।

D7 के मामले में एडमिन / कॉन्फिग / कंटेंट / फॉर्मेट / फिल्टर्ड_एचटीएमएल पर जाएं। फ़िल्टर सेटिंग्स के तहत, "सीमा अनुमत HTML टैग्स" टैब पर क्लिक करें। उस HTML टैग को दर्ज करें जिसे आप टेक्स्ट बॉक्स में उपयोग करना चाहते हैं।


D7 का उपयोग करते हुए Im और मुझ पर विश्वास करो, यह पहली चीज थी जो मैंने की थी और जब यह काम नहीं किया तो मैं चौंक गया था! (हाँ मैंने कई बार कैश भी साफ़ किया है)। यह वास्तव में चौंकाने वाला है और मेरी साइट के लिए सभी मदद पाठ क्षेत्रों पर ऐसा लगता है। यहां तक ​​कि अगर मैं अनुमत HTML फ़िल्टर को सादे पाठ में जोड़ देता हूं और तालिका tr td जोड़ देता हूं तो यह काम नहीं करता है। बहुत कष्टप्रद।
7wonders

मैंने अभी एक डी 7 ताज़ा स्थापित किया है और इसके डिफ़ॉल्ट व्यवहार की पुष्टि कर सकता हूं। यह सहायता अनुभाग = पागलपन में टैग बदलने की अनुमति नहीं देगा! क्या हुक इसे ओवरराइड कर सकता है?
7wonders

1
"Full html" को एक डिफ़ॉल्ट इनपुट प्रारूप के रूप में सेट करने का प्रयास करें और फिर जांचें।
एयरोजेपेलिन

मैं यह पुष्टि कर सकता हूं कि मैं Drupal 7.10 के साथ फ़िल्टर किए गए HTML के लिए अनुमत टैग को बदलने में सक्षम था, और फ़िल्टर ने 'अनुमत टैग' डिस्प्ले के रूप में भी काम किया। तो वास्तव में aerozeppelin का उत्तर सही है। :-)
पौल-मी

1
लेकिन यदि आप प्रश्न पॉल को पढ़ते हैं तो यह फ़ील्ड के लिए सहायता पाठ में अनुमत टैग के संबंध में है, इसलिए उत्तर सही नहीं है।
7
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.