class FilterImageLazyLoad
Same name in other branches
- 11.x core/modules/filter/src/Plugin/Filter/FilterImageLazyLoad.php \Drupal\filter\Plugin\Filter\FilterImageLazyLoad
Provides a filter to lazy load tracked images.
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements \Drupal\Component\Plugin\PluginInspectionInterface, \Drupal\Component\Plugin\DerivativeInspectionInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
- class \Drupal\filter\Plugin\FilterBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\filter\Plugin\FilterInterface
- class \Drupal\filter\Plugin\Filter\FilterImageLazyLoad extends \Drupal\filter\Plugin\FilterBase
- class \Drupal\filter\Plugin\FilterBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\filter\Plugin\FilterInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
Expanded class hierarchy of FilterImageLazyLoad
1 file declares its use of FilterImageLazyLoad
- FilterImageLazyLoadTest.php in core/
modules/ filter/ tests/ src/ Unit/ FilterImageLazyLoadTest.php
File
-
core/
modules/ filter/ src/ Plugin/ Filter/ FilterImageLazyLoad.php, line 17
Namespace
Drupal\filter\Plugin\FilterView source
final class FilterImageLazyLoad extends FilterBase {
/**
* {@inheritdoc}
*/
public function process($text, $langcode) : FilterProcessResult {
$result = new FilterProcessResult($text);
// If there are no images, return early.
if (stripos($text, '<img ') === FALSE && stripos($text, 'data-entity-type="file"') === FALSE) {
return $result;
}
return $result->setProcessedText($this->transformImages($text));
}
/**
* Transform markup of images to include loading="lazy".
*
* @param string $text
* The markup to transform.
*
* @return string
* The transformed text with loading attribute added.
*/
private function transformImages(string $text) : string {
$dom = Html::load($text);
$xpath = new \DOMXPath($dom);
// Only set loading="lazy" if no existing loading attribute is specified and
// dimensions are specified.
foreach ($xpath->query('//img[not(@loading="eager") and @width and @height]') as $element) {
assert($element instanceof \DOMElement);
$element->setAttribute('loading', 'lazy');
}
return Html::serialize($dom);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
FilterBase::$provider | public | property | The name of the provider that owns this filter. | ||
FilterBase::$settings | public | property | An associative array containing the configured settings of this filter. | ||
FilterBase::$status | public | property | A Boolean indicating whether this filter is enabled. | ||
FilterBase::$weight | public | property | The weight of this filter compared to others in a filter collection. | ||
FilterBase::calculateDependencies | public | function | Calculates dependencies for the configured plugin. | Overrides DependentPluginInterface::calculateDependencies | 1 |
FilterBase::defaultConfiguration | public | function | Gets default configuration for this plugin. | Overrides ConfigurableInterface::defaultConfiguration | |
FilterBase::getConfiguration | public | function | Gets this plugin's configuration. | Overrides ConfigurableInterface::getConfiguration | |
FilterBase::getDescription | public | function | Returns the administrative description for this filter plugin. | Overrides FilterInterface::getDescription | |
FilterBase::getHTMLRestrictions | public | function | Returns HTML allowed by this filter's configuration. | Overrides FilterInterface::getHTMLRestrictions | 4 |
FilterBase::getLabel | public | function | Returns the administrative label for this filter plugin. | Overrides FilterInterface::getLabel | |
FilterBase::getType | public | function | Returns the processing type of this filter plugin. | Overrides FilterInterface::getType | |
FilterBase::prepare | public | function | Prepares the text for processing. | Overrides FilterInterface::prepare | |
FilterBase::setConfiguration | public | function | Sets the configuration for this plugin instance. | Overrides ConfigurableInterface::setConfiguration | 1 |
FilterBase::settingsForm | public | function | Generates a filter's settings form. | Overrides FilterInterface::settingsForm | 3 |
FilterBase::tips | public | function | Generates a filter's tip. | Overrides FilterInterface::tips | 9 |
FilterBase::__construct | public | function | 4 | ||
FilterImageLazyLoad::process | public | function | Performs the filter processing. | Overrides FilterInterface::process | |
FilterImageLazyLoad::transformImages | private | function | Transform markup of images to include loading="lazy". | ||
FilterInterface::TYPE_HTML_RESTRICTOR | constant | HTML tag and attribute restricting filters to prevent XSS attacks. | |||
FilterInterface::TYPE_MARKUP_LANGUAGE | constant | Non-HTML markup language filters that generate HTML. | |||
FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE | constant | Irreversible transformation filters. | |||
FilterInterface::TYPE_TRANSFORM_REVERSIBLE | constant | Reversible transformation filters. | |||
PluginInspectionInterface::getPluginDefinition | public | function | Gets the definition of the plugin implementation. | 6 | |
PluginInspectionInterface::getPluginId | public | function | Gets the plugin ID of the plugin instance. | 2 |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.