Добавляем alt изображениям, у которых его нет (Revo)

alt является обязательным атрибутом тега img, поэтому его отсутствие негативно сказывается на валидности вашего HTML. При необходимости соответствовать требованиям валидатора, приходится как-то решать проблему отсутствия атрибута alt, например, в коде, который вставляет в контент манагер. Выкладываю небольшой плагин, добавляющий тегам IMG аттрибут alt (если последний отсутствует).

Создаем плагин, называем его как-нибудь, на закладке "Системные события" ставим галку напротив OnWebPagePrerender (MODX инициализирует это событие после того, как все теги обработаны и перед тем, как страница отправится в браузер.)

Код плагина:


<?php
if ($modx->event->name == 'OnWebPagePrerender') {
$output = &$modx->resource->_output; // получаем доступ к содержанию страницы
$dom = new DOMDocument;
$dom->loadHTML($output); // берём необходимый HTML
$xpath = new DOMXPath($dom); //инициируем XPath
$tags = $xpath->query('//img'); //ищем необходимый тег
foreach ($tags as $tag) {
    if (!$tag->hasAttribute('alt')) {
        $fn = end(explode("/",$tag->getAttribute("src" ))); //получаем имя файла
        $tag->setAttribute("alt", $fn); //записываем имя файла в alt
    }
}
$output = $dom->saveHTML();
}


Как вариант, можно добавлять пустой alt: $tag->setAttribute("alt", "");, но для разнообразия в данном примере в alt прописывается имя файла. Все, при открытии страницы в браузере, все теги img, у которых атрибут alt отсутствует, получат его в виде alt="имя_файла_картинки".


Теги: Revolution, плагин, alt, img, OnWebPagePrerender

Сообщение отправлено

Закрыть