কাঁচা এইচটিএমএল # মার্কআপে পাস করুন


24

আমার কিছু এইচটিএমএল সামগ্রী রয়েছে, এটি একটি বাহ্যিক লাইব্রেরি থেকে আসে যাতে আমি এটি পরিবর্তন করতে পারি না, এর অনেকগুলি <span>এবং এর <div>মতো বৈশিষ্ট্যযুক্ত ট্যাগ রয়েছে: <span style="color: #0000ff;">তবে আমি যখন ব্যবহার করি:

$render = array(
  '#markup' => $myhtmlcontent,
);

একটি রেন্ডারে অ্যারেতে, দ্রুপাল বৈশিষ্ট্যগুলি স্ট্রিপ করে এবং এটি <span>স্টাইলগুলি ছাড়াই রাখে ।

সুতরাং, আমি কীভাবে ড্রপাল পরিবর্তনগুলি এড়াতে পারি যা আমি মার্কআপ হিসাবে পাস করি, যার কোনও ফিল্টারের প্রয়োজন নেই কারণ গ্রন্থাগারটি এটি নিরাপদ করে তোলে বা শেষ পর্যন্ত এটি স্টাইলগুলিকে অনুমতি দেয়?


শৈলীর বৈশিষ্ট্যগুলি সর্বদা ছিনিয়ে নেওয়া হয়
ইজমির রামিরেজ

উত্তর:


28

ইনলাইন টেম্পলেট ব্যবহার করুন:

  return [
    '#type' => 'inline_template',
    '#template' => '{{ somecontent }}',
    '#context' => [
      'somecontent' => $somecontent
    ]
  ];

প্রসঙ্গ ছাড়াই আপনার ক্ষেত্রে, সরাসরি সোজা এইচটিএমএল।

আপনি স্ক্রিপ্ট বা লিঙ্ক ইত্যাদির জন্য এইচটিএমএল_ট্যাগ উপাদানটিও ব্যবহার করতে পারেন।


2
এটি IFRAME ট্যাগগুলি ফিল্টার করে।
জোছিম

1
এবং স্ক্রিপ্ট এবং স্টাইল ট্যাগগুলি
ইজমির রামিরেজ

8
{{পরিবর্তনশীল | চেষ্টা করুন কাঁচা}} বা <ট্যাগ> {{পরিবর্তনশীল}} </tag>

1
@ ইভানজারস এটি কেবল অটো থেকে বেরিয়ে যাওয়া এড়িয়ে যাবে variable, তবে `\ ড্রুপাল \ উপাদান onent ইউটিলিটি \ এক্সএস :: ফিল্টারএডমিন () still এখনও <script> এবং শৈলীর বৈশিষ্ট্যের মতো ট্যাগগুলি ফিল্টার করবে। আমি এখন পর্যন্ত কেবলমাত্র একটি উপায় দেখেছি জাভাস্ক্রিপ্ট ফাইলটিকে একটি লাইব্রেরি হিসাবে যুক্ত করা এবং উপরের অংশে '# সংযুক্ত' => 'লাইব্রেরি' => "মডিউল_নাম / গ্রন্থাগার_কি_ইন_ জিম" যুক্ত করা return। @see drupal.stackexchange.com/questions/211078/…
ইজমির রামিরেজ

1
এইচটিএমএল মন্তব্য করার একমাত্র / সেরা উপায় যদি কেউ জানেন? যেমন <! - হ্যালো, ওয়ার্ল্ড! -> (এনবি: উপরে উল্লিখিত হিসাবে আপনার প্রয়োজন '| কাঁচা')
উইলিয়াম তারেল

18

রেন্ডার এপিআই ওভারভিউ-তে নথী হিসাবে , দ্রুপাল 8-এ # মার্কআপে পাস করা স্ট্রিংটি \ দ্রুপাল \ উপাদান \ ইউটিলিটি \ এক্সএস :: ফিল্টারএডমিন () এর মধ্য দিয়ে গেছে , যা এক্সএসএস নয় এমন এইচটিএমএল ট্যাগগুলির অনুমতিপ্রাপ্ত তালিকার অনুমতি দেওয়ার সাথে সাথে এক্সএসএস ভেক্টরকে স্ট্রিপ করে stri ভেক্টর। অনুমোদিত ট্যাগগুলির তালিকা সেট করতে আপনি # নাকী_ট্যাগগুলি ব্যবহার করতে পারেন, তবে এটি দ্রুপালকে স্ট্রিপিং বৈশিষ্ট্যগুলি (যেমন শৈলী) থেকে বিরত রাখতে পারে না।

$output['filtered_string'] = array(
  '#markup' => '<em>This is filtered</em>',
  '#allowed_tags' => ['strong'],
);

যেহেতু আপনার ক্ষেত্রে আপনি জটিল এইচটিএমএল মার্কআপ পাস করছেন, আপনার # টাইপ ব্যবহার করা উচিত ( ইভান জারোসের পরামর্শ অনুসারে বা # থিম ব্যবহার করুন use এক্ষেত্রে # টাইপ আরও ভাল সমাধান বলে মনে হচ্ছে।

আপনি রেন্ডার এলিমেন্ট প্লাগইন সহ একটি নতুন ধরণের বাস্তবায়নও করতে পারেন, তবে যদি আপনার এটির প্রয়োজন হয় তবে রেন্ডার এলিমেন্ট প্লাগইন প্রয়োগ করা সম্ভবত অতিরিক্ত মাত্রায়।


12

আপনি যদি অ্যারেগুলি সরবরাহ করতে সরল মার্কআপ যুক্ত করতে চান তবে আপনি এটি \ দ্রুপাল \ কোর \ রেন্ডার \ মার্কআপ ব্যবহার করে তৈরি করতে পারেন । এটি আপনাকে কোনও কিছুতে কাঁচা এইচটিএমএল রাখার অনুমতি দেবে। উদাহরণস্বরূপ, টেবিলগুলিতে এইচটিএমএল লাগানোর জন্য অনুমতি প্রতিবেদনের মডিউলে এটি কীভাবে ব্যবহৃত হয়েছে তা এখানে :

$rows[] = [
  [
    'data' => $this->l($meta['title'], new Url('permission_report.permission', ['user_permission' => $perm], $options)),
  ],
  ['data' => $users_having_role],
  ['data' => Markup::create(implode(', ', $display_roles))],
];

3
আমি জানি এই দুই বছরের নিচে রেখেছে তবে ধন্যবাদ। নতুনদের জন্য আমাকে এটিকে সহজতর করুন:: দ্রুপাল \ কোর ore রেন্ডার \ মার্কআপ $ শিরোলেখগুলি আইকন = মার্কআপ :: তৈরি করুন ('<i শ্রেণি = "এফএ-এফ-কোগস"> </ i>');
এনগাটিয়া ফ্র্যাঙ্কলাইন

@ নাগাটিয়া ফ্র্যাঙ্কলাইন, আপনাকে আমার কৃতজ্ঞতা জানানোর কোন উপায় আছে?
শুকনো

আমি এটি করেছি: $ ফর্ম ['প্রথম_নাম'] = অ্যারে ('# টাইপ' => 'টেক্সটফিল্ড', '# শিরোনাম' => টি ('আপনার প্রথম নাম:'), '# প্রয়োজনীয়' => সত্য, '# বৈশিষ্ট্য '=> অ্যারে (' শ্রেণি '=> অ্যারে (' ফর্ম-নিয়ন্ত্রণ রেখ '),' নাম '=> অ্যারে (' প্রথম নাম ')),' # লেবেল_অ্যাট্রিবিউটস '=> অ্যারে (' শ্রেণি '=> অ্যারে (' বাধ্যতামূলক ')),' # ছেলেমেয়ে '=> মার্কআপ :: তৈরি করুন (' <স্প্যান শ্রেণি = "ত্রুটি-পাঠ্য"> দয়া করে বৈধ প্রথম নাম </ span> ') লিখুন,););
18

12

একটি রেন্ডার অ্যারেতে, কেবল এটি করুন:

return [
  '#children' => $html,
];

যেমন যদি পিএইচপি'র সাহায্যে $htmlউত্পাদিত হয় highlight_string()তবে এতে স্টাইল বৈশিষ্ট্য থাকবে যা দিয়ে মুছে ফেলা হবে #markup। তবে #childrenসেগুলি সংরক্ষণ করে।


হ্যাঁ - এটি আমার পক্ষে কাজ করেছিল। পরিবর্তে #মার্কআপে অন্যান্য কিছু কীওয়ার্ড যেমন # স্কোড বা # শিশু বা # কাস্টমনাম
manimjs
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.