Проверка на заполнение атрибута alt у тега img
SEO-шники говорят что атрибут alt у тега img очень важен для поисковых роботов. Один из товарищей попросил написать на его сайт плагин, который на лету проверял бы наличие и заполнение атрибута ALT у всех изображений и не давал бы менеджеру сохранить ресурс если хоть 1 изображение без атрибута alt (не важно пустой он или его вообще нет).
____________________________________________________________________________________________
Сниппет превратился в пакет с более широкими возможностями и некоторыми багфиксами:
modstore.pro/packages/content/althelper
____________________________________________________________________________________________
Вчера вечером я не смог решить проблему «вечного сохранения» ресурса, такая конструкция почему-то не понравилась MODX'у.
Посему как временное решение я написал плагин на событие OnLoadWebDocument, который подставлял в атрибут alt название ресурса. Однако это оказалось плохим решением для SEO, одинаковое значение в атрибуте alt негативно воспринимают роботы. Сегодня @Евгений Webinmd подсказал мне как решить мою «вечернюю проблему» и я написал небольшой плагин, который, надеюсь, сделает многим сеошникам и контент-менеджерам работающим на MODX хорошо:
Отдельно отмечу что я добавил автоматическое дублирование значения атрибута alt в атрибут title. Т.е. он создается автоматически и уже заполненный, мелочь но приятно. :-)
Тестируйте, отписывайтесь что и как.
____________________________________________________________________________________________
Внимание!
Сниппет превратился в пакет с более широкими возможностями и некоторыми багфиксами:
modstore.pro/packages/content/althelper
____________________________________________________________________________________________
Вчера вечером я не смог решить проблему «вечного сохранения» ресурса, такая конструкция почему-то не понравилась MODX'у.
$modx->resource->getContent();Посему как временное решение я написал плагин на событие OnLoadWebDocument, который подставлял в атрибут alt название ресурса. Однако это оказалось плохим решением для SEO, одинаковое значение в атрибуте alt негативно воспринимают роботы. Сегодня @Евгений Webinmd подсказал мне как решить мою «вечернюю проблему» и я написал небольшой плагин, который, надеюсь, сделает многим сеошникам и контент-менеджерам работающим на MODX хорошо:
switch ($modx->event->name) {
case 'OnBeforeDocFormSave':
$content = $resource->getContent();
if (!empty($content)) {
$imgs = array();
$img = '~<img[^>]+>~i';
if (!empty(preg_match_all($img, $content, $imgs, PREG_PATTERN_ORDER))) {
foreach ($imgs[0] as $img) {
$alt = preg_match('~alt="(.*?)"~u', $img, $alts);
if (empty($alts[0])) {
$modx->event->output("Сохранение не удалось. Не у всех изображений указан тег Alt.");
return;
} else {
if ($alts[0] == 'alt=""') {
$modx->event->output("Сохранение не удалось. Не у всех изображений заполнен тег Alt.");
return;
} else {
$img = preg_replace('~alt="(.*?)"~u', '<img$1 alt="' . $alts[1] . '" title="' . $alts[1] . '" $5 ', $img);
$images[] = $img;
}
}
}
}
$imgCount = count($images);
for ($i = 0; $i < $imgCount; $i++) {
$content = str_replace($imgs[0][$i], $images[$i], $content);
}
$resource->set('content', $content);
$resource->save();
}
break;
}Отдельно отмечу что я добавил автоматическое дублирование значения атрибута alt в атрибут title. Т.е. он создается автоматически и уже заполненный, мелочь но приятно. :-)
Тестируйте, отписывайтесь что и как.
Комментарии: 10
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Я уже молчу про SEO, они за такое по рукам бить будут.
P.S.
Раз тебе не нужно сбрасывать процесс сохранения, то ты можешь изменить скрипт. Там где проверяется alt на пустоту, вместо $alts[1] подставляй что угодно.
Не самое «быстрое» решение (в плане, плагин обрабатывает каждый вывод), зато самый надежный, если сайт небольшой. Добавляет alt и title ко всем картинкам, и не просто из title страницы, а ищет ближайшие к нему h1/h2/h3 и т.д. В настройках можно это поменять. Я его еще немного допилил для себя, что бы не добавлял альты к определенным директориям.
И вообще, это работа менеджера сайта, писать хороший контент правильно. Так что я, например, свое решение установил и себе на сайты, дабы не забывать про alt.
Применив должную фантазию и совсем немного строк кода, можно прописать любую логику в этом плагине и не только в поле content. Это минимум функционала, что-то типа базовой функции. Ну а дальше этот сниппет можно развивать и даже собрать из него дополнение.
Может быть так и произойдет, если найду причины его расширения.
Обнаружена ошибка при сохранении ресурса:
t.me/iWatchYouFromAfar
P.S.
Компонент работает только с типом содержимого HTML — чей идентификатор 1 (по умолчанию). Но тут скорее всего дело в другом.
Заметил такую ошибку при выставлении уровня althelper_alt_from_title.
Если в содержании вставляется не путь к изображению а изображение из ms2gallery, к примеру
то тег alt заполняется, а вот само изображение пропадает. Видимо что-то с рендером страницы при наличии MODX-овских выражений