Puteți face acest lucru automat prin crearea propriului filtru de text într-un modul personalizat.
Rețineți că /** @Filtru ... */
în fața clasei nu este un comentariu, ci o adnotare, trebuie inclusă în fișier. Înlocuiți toate elementele elegante cu majuscule cu propriul cod.
src/Plugin/Filter/MYFANCYFILTER.php
<?php
spațiu de nume Drupal\MY_MODULE\Plugin\Filter;
utilizați Drupal\filter\FilterProcessResult;
utilizați Drupal\filter\Plugin\FilterBase;
utilizați Drupal\Component\Utility\Html;
/**
* @Filtru(
* id = "MY_FANCY_FILTER",
* title = @Translation ("Filtrul meu de lux"),
* description = @Translation(„Face HTML-ul și mai elegant”),
* tip = Drupal\filter\Plugin\FilterInterface::TYPE_TRANSFORM_REVERSIBLE
* )
*/
clasa MYFANCYFILTER extinde FilterBase {
proces de funcție publică ($text, $langcode) {
$rezultat = new FilterProcessResult($text);
$dom = Html::load($text);
$xpath = nou \DOMXPath($dom);
// pentru a selecta toate linkurile, trebuie să creați o interogare XPath
// exemplul de interogare de mai jos selectează toate etichetele <a> care au un atribut „href”.
// vezi https://www.w3schools.com/xml/xpath_syntax.asp
foreach ($xpath->query("//a[@href]") ca $element) {
// exemplul logic de mai jos acceptă toate linkurile care încep cu „http://” sau „https://” sau „//”
dacă (preg_match('|^(https?:)?//.+|', $element->getAttribute('href')) === 1) {
// vezi https://www.php.net/manual/de/class.domelement.php
// pentru documente despre manipularea markupului HTML
$element->setAttribute('MY_ATTRIBUTE', 'MY_VALUE');
}
}
$rezultat->setProcessedText(Html::serialize($dom));
returnează $rezultat;
}
}
Apoi activați noul dvs. filtru de text pentru formatul de text corespunzător în
Configurare > Crearea conținutului > Formate de text și editori