คุณสามารถทำได้โดยอัตโนมัติโดยสร้างตัวกรองข้อความของคุณเองในโมดูลที่กำหนดเอง
โปรดทราบว่า /** @กรอง ... */
หน้าชั้นเรียนไม่ใช่ความคิดเห็น แต่เป็นคำอธิบายประกอบ จะต้องรวมไว้ในไฟล์ แทนที่ตัวพิมพ์ใหญ่แฟนซีทั้งหมดด้วยรหัสของคุณเอง
src/Plugin/Filter/MYFANCYFILTER.php
<?php
เนมสเปซ Drupal\MY_MODULE\Plugin\Filter;
ใช้ Drupal\filter\FilterProcessResult;
ใช้ Drupal\filter\Plugin\FilterBase;
ใช้ Drupal\Component\Utility\Html;
/**
* @กรอง(
* id = "MY_FANCY_FILTER",
* title = @Translation("ฟิลเตอร์แฟนซีของฉัน"),
* คำอธิบาย = @Translation("ทำให้ HTML น่าสนใจยิ่งขึ้น"),
* ประเภท = Drupal\filter\Plugin\FilterInterface::TYPE_TRANSFORM_REVERSIBLE
* )
*/
คลาส MYFANCYFILTER ขยาย FilterBase {
กระบวนการทำงานสาธารณะ ($text, $langcode) {
$result = ใหม่ FilterProcessResult($text);
$dom = Html::load($text);
$xpath = ใหม่ \DOMXPath($ดอม);
// เพื่อเลือกลิงก์ทั้งหมดที่คุณต้องสร้างแบบสอบถาม XPath
// ข้อความค้นหาตัวอย่างด้านล่างเลือกแท็ก <a> ทั้งหมดที่มีแอตทริบิวต์ "href"
// ดู https://www.w3schools.com/xml/xpath_syntax.asp
foreach ($xpath->query("//a[@href]") เป็นองค์ประกอบ $) {
// ตรรกะตัวอย่างด้านล่างยอมรับลิงก์ทั้งหมดที่ขึ้นต้นด้วย "http://" หรือ "https://" หรือ "//"
ถ้า (preg_match('|^(https?:)?//.+|', $element->getAttribute('href')) === 1) {
// ดู https://www.php.net/manual/de/class.domelement.php
// สำหรับเอกสารเกี่ยวกับการจัดการมาร์กอัป HTML
$element->setAttribute('MY_ATTRIBUTE', 'MY_VALUE');
}
}
$result->setProcessedText(Html::serialize($dom));
ส่งคืนผลลัพธ์ $;
}
}
จากนั้นเปิดใช้งานตัวกรองข้อความใหม่สำหรับรูปแบบข้อความที่เกี่ยวข้องใน
การกำหนดค่า > การเขียนเนื้อหา > รูปแบบข้อความและตัวแก้ไข