feat: migrate to native lazy loading of images
This commit is contained in:
@@ -1,49 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace EP\EpTheme\ViewHelpers;
|
||||
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use TYPO3\CMS\Fluid\ViewHelpers\ImageViewHelper;
|
||||
|
||||
class LazyLoadImageViewHelper extends ImageViewHelper
|
||||
{
|
||||
public function initializeArguments()
|
||||
{
|
||||
parent::initializeArguments();
|
||||
$this->registerArgument('loaderimg', 'string', '', false);
|
||||
}
|
||||
|
||||
public function render(): string
|
||||
{
|
||||
parent::render();
|
||||
|
||||
$src = $this->tag->getAttribute('src');
|
||||
$this->tag->removeAttribute('src');
|
||||
$this->tag->addAttribute('data', ['src' => $src], false);
|
||||
|
||||
if (isset($this->arguments['loaderimg'])) {
|
||||
$loaderImage = $this->imageService->getImage($this->arguments['loaderimg'], null, false);
|
||||
$processingInstructions = [
|
||||
'width' => $this->arguments['width'],
|
||||
'height' => $this->arguments['height'],
|
||||
'minWidth' => $this->arguments['minWidth'],
|
||||
'minHeight' => $this->arguments['minHeight'],
|
||||
'maxWidth' => $this->arguments['maxWidth'],
|
||||
'maxHeight' => $this->arguments['maxHeight'],
|
||||
];
|
||||
$processedLoaderImage = $this->imageService->applyProcessingInstructions($loaderImage, $processingInstructions);
|
||||
$loaderImageUri = $this->imageService->getImageUri($processedLoaderImage, $this->arguments['absolute']);
|
||||
$this->tag->addAttribute('src', $loaderImageUri);
|
||||
}
|
||||
|
||||
$classes = $this->tag->getAttribute('class');
|
||||
$classItems = GeneralUtility::trimExplode(' ', $classes, true);
|
||||
$classItems[] = 'lazyload';
|
||||
$classes = implode(' ', array_unique($classItems));
|
||||
$this->tag->addAttribute('class', $classes);
|
||||
// ensure a11y compliance
|
||||
$this->tag->removeAttribute('title');
|
||||
|
||||
return $this->tag->render();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user