Bạn có thể tự động thực hiện việc này bằng cách tạo bộ lọc văn bản của riêng mình trong một mô-đun tùy chỉnh.
Lưu ý rằng /** @Lọc ... */
ở phía trước lớp không phải là một bình luận, mà là một chú thích, nó phải được đưa vào tệp. Thay thế tất cả nội dung viết hoa ưa thích bằng mã của riêng bạn.
src/Plugin/Filter/MYFANCYFILTER.php
<?php
không gian tên Drupal\MY_MODULE\Plugin\Filter;
sử dụng Drupal\filter\FilterProcessResult;
sử dụng Drupal\filter\Plugin\FilterBase;
sử dụng Drupal\Thành phần\Tiện ích\Html;
/**
* @Lọc(
* id = "MY_FANCY_FILTER",
* title = @Translation("Bộ lọc ưa thích của tôi"),
* description = @Translation("Làm cho HTML đẹp hơn nữa"),
* loại = Drupal\filter\Plugin\FilterInterface::TYPE_TRANSFORM_REVERSIBLE
* )
*/
lớp MYFANCYFILTER mở rộng FilterBase {
quy trình hàm công khai($text, $langcode) {
$result = new FilterProcessResult($text);
$dom = Html::load($text);
$xpath = new \DOMXPath($dom);
// để chọn tất cả các liên kết bạn phải tạo một truy vấn XPath
// truy vấn mẫu bên dưới chọn tất cả các thẻ <a> có thuộc tính "href"
// xem https://www.w3schools.com/xml/xpath_syntax.asp
foreach ($xpath->query("//a[@href]") dưới dạng $element) {
// logic ví dụ bên dưới chấp nhận tất cả các liên kết bắt đầu bằng "http://" hoặc "https://" hoặc "//"
if (preg_match('|^(https?:)?//.+|', $element->getAttribute('href')) === 1) {
// xem https://www.php.net/manual/de/class.doelement.php
// dành cho tài liệu về thao tác đánh dấu HTML
$element->setAttribute('MY_ATTRIBUTE', 'MY_VALUE');
}
}
$result->setProcessedText(Html::serialize($dom));
trả lại kết quả $;
}
}
Sau đó kích hoạt bộ lọc văn bản mới của bạn cho định dạng văn bản tương ứng trong
Cấu hình > Tác giả nội dung > Định dạng văn bản và trình chỉnh sửa