Drupal 8 टहनी में HTML के रूप में सादा पाठ रेंडर करें


15

मैं एक सादे पाठ क्षेत्र से html में एक svg छवि मार्कअप कोड प्रस्तुत करने की कोशिश कर एक दीवार में चला गया हूँ।

मैं एक सादे पाठ क्षेत्र से svg कोड को प्रस्तुत करना चाह रहा हूं बिना सादे पाठ क्षेत्र को हर जगह प्रतिपादन किए बिना।

सादा पाठ प्रारूप वर्तमान में सभी HTML टैग और <> को कनवर्ट करता है &lt; &gt;

मैंने एक फ़ील्ड टेम्प्लेट बनाया और फ़ील्ड कंटेंट को आउटपुट करने की कोशिश की

{{ item.content.context.value }}

तथा

{{ item.content|raw }}

दोनों "उद्धरण चिह्नों" के साथ स्ट्रिंग को हर पंक्ति के रूप में मान प्रदान करते हैं और <br/>टैग में लाइन-ब्रेक को परिवर्तित करते हैं ।

मेरे पास पहले फ़ील्ड प्रकार स्वरूपित पाठ था, लेकिन वह भी सब कुछ <pre>टैग में लिपटा हुआ था , तब भी जब सभी टैग अनुमत थे। मैं वास्तव में इसे सादे पाठ के साथ काम करना चाहता हूं।

Svg-code का उदाहरण फ़ील्ड को पाठ रूप में रखना है:

<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
         viewBox="0 0 290 290" enable-background="new 0 0 290 290" xml:space="preserve">
    <g>
        <path fill="none" stroke="#78C681" stroke-width="3" stroke-miterlimit="10" d="M261.1,273.1H28.9c-6.6,0-12-5.4-12-12V28.9
            c0-6.6,5.4-12,12-12h232.1c6.6,0,12,5.4,12,12v232.1C273.1,267.7,267.7,273.1,261.1,273.1z"/>
        <circle fill="none" stroke="#1B435D" stroke-width="2" stroke-miterlimit="10" cx="145.2" cy="166.9" r="62.7"/>
        <line fill="none" stroke="#78C681" stroke-width="3" stroke-miterlimit="10" x1="16.9" y1="60.8" x2="273.1" y2="60.8"/>
        <circle fill="none" stroke="#1B435D" stroke-width="2" stroke-miterlimit="10" cx="178.3" cy="152.3" r="6.8"/>
        <path fill="none" stroke="#1B435D" stroke-width="2" stroke-linecap="round" stroke-miterlimit="10" d="M115.1,167.9
            c8.8,0,22.3,3.2,28.4,4.7"/>
        <path fill="none" stroke="#1B435D" stroke-width="2" stroke-linecap="round" stroke-miterlimit="10" d="M151.9,216.9
            c0,0,17.2-1.5,29.6-14.8"/>
    </g>
</svg>

आशा है कि कोई मदद कर सकता है।

श्रेष्ठ,

Alari


बॉक्स के बाहर सादे पाठ में एक फ़िल्टर होता है जो मार्कअप से बच जाता है। |rawपहले से ही मार्कअप से बच नहीं करता है। पलायन ट्विग के ऑटो से भागने से पहले हो रहा है।
कोट्सर

जवाबों:


17

द्रुपाल समुदाय से iworkyon द्वारा एक समाधान :

फ़ील्ड - नोड - [फ़ील्ड नाम] .html.twig:

{% if svg %}
  <div class="my-svg">
    {{ svg|raw }}
  </div>
{% endif %}

THEME.info:

/**
* Implements hook_preprocess_field().
*/
function MYTHEME_preprocess_field(&$variables, $hook) {
    switch ($variables['element']['#field_name']) {
      case 'field_svg_test':
        $variables['svg'] = $variables['items'][0]['content']['#context']['value'];
        break;
    }
}

हे, मेरा "मैं काम पर हूँ" की तरह लग रहा है आईआरसी उपनाम यहाँ में घूमा: डी मज़ा खोज जबकि googling!

आशा है कि आप बुरा नहीं मानेंगे :) इससे मुझे मदद मिली, तो मैंने सोचा कि मैं साझा करूँगा।
अलारी ट्रट्स

7

क्या आपने मूल्य पर कच्चे फ़िल्टर को लागू करने की कोशिश की?

{{ item.content.context.value|raw }}

लेकिन यह सुरक्षित नहीं है। फ़ाइलों को आउटपुट करने के लिए, आप एक फ़ाइल फ़ील्ड का उपयोग कर सकते हैं। यह लिंक उत्पन्न करने के लिए सही फ़ील्ड फ़ॉर्मेटर्स है। यदि आप अपनी आवश्यकताओं के लिए ui में लिंक को कॉन्फ़िगर करने में सक्षम नहीं हैं, तो आप इस विशिष्ट क्षेत्र के लिए टहनी या पूर्वप्रक्रम को संशोधित कर सकते हैं।


rawकिया जा रहा / निकाल दिया जाता है किया गया है: drupal.org/node/2603074
क्लाइव

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

आप किसी समाधान तक पहुँचने से और भी अधिक हैं, क्योंकि आप ऑटो को टालने की कोशिश करते हैं, जिससे बचने के लिए ड्रुपल आपको ऐसा करने से हतोत्साहित करने की कोशिश करता है। मेरे जवाब में बताई गई फ़ाइल लिंक प्रदान करने के लिए वहां मौजूद तंत्र का बेहतर उपयोग करें। और फिर रेंडरिंग को बदलने के लिए लाइन के नीचे उपयुक्त टहनी टेम्प्लेट का उपयोग करें।
4k4

4k4: मैं अब थोड़ा उलझन में हूं, क्योंकि सामग्री को जिस क्षेत्र में रखना है वह फाइल नहीं है। यह पाठ / svg-code के रूप में है। मैंने एक उदाहरण के साथ प्रश्न को अद्यतन किया।
अलारी ट्रॉट्स

सादा पाठ इस svg कोड को आउटपुट करने में सक्षम नहीं होगा। क्या आपने "पूर्ण एचटीएमएल" पाठ प्रारूप की कोशिश की, अगर यह svg-code को संसाधित कर सकता है? यदि नहीं, तो आप बेहतर svg को अपनी svg-file में रख सकते हैं।
4k4

6

यह मेरे लिए काम किया:

{{ item.content['#context'].value|raw }}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.