Вы можете сделать это автоматически, создав собственный текстовый фильтр в пользовательском модуле.
Обратите внимание, что /** @Фильтр... */
перед классом не комментарий, а аннотация, ее надо включить в файл. Замените все причудливые заглавные буквы своим собственным кодом.
src/Plugin/Фильтр/MYFANCYFILTER.php
<?php
пространство имен Drupal\MY_MODULE\Plugin\Filter;
используйте Drupal\filter\FilterProcessResult;
используйте Drupal\filter\Plugin\FilterBase;
используйте Drupal\Component\Utility\Html;
/**
* @Фильтр(
* идентификатор = "MY_FANCY_FILTER",
* title = @Translation("Мой причудливый фильтр"),
* description = @Translation("Делает HTML еще интереснее"),
* тип = Drupal\filter\Plugin\FilterInterface::TYPE_TRANSFORM_REVERSIBLE
* )
*/
класс MYFANCYFILTER расширяет FilterBase {
процесс публичной функции ($ text, $ langcode) {
$ результат = новый FilterProcessResult ($ текст);
$dom = Html::load($text);
$xpath = новый \DOMXPath($dom);
// чтобы выбрать все ссылки, вам нужно создать запрос XPath
// приведенный ниже пример запроса выбирает все теги <a> с атрибутом "href"
// см. https://www.w3schools.com/xml/xpath_syntax.asp
foreach ($xpath->query("//a[@href]") as $element) {
// приведенный ниже пример логики принимает все ссылки, начинающиеся с «http://», «https://» или «//»
if (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));
вернуть $результат;
}
}
Затем включите новый текстовый фильтр для соответствующего текстового формата в
Конфигурация > Создание контента > Текстовые форматы и редакторы