Проверка на заполнение атрибута 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
Наверно лучше не делать так, пусть сохраняют ресурс. Сделай лучше чтоб в alt попадал pagetitle и все.
Почитай статью, я написал почему такой вариант не подошел. Как пример, представь сайт который по госту должен иметь версию для слабовидящих. На таких версиях дают возможность отключать изображения и посетитель вместо изображений будет видеть alt. По твоей логике получится везде одинаковые названия изображений.
Я уже молчу про SEO, они за такое по рукам бить будут.
P.S.
Раз тебе не нужно сбрасывать процесс сохранения, то ты можешь изменить скрипт. Там где проверяется alt на пустоту, вместо $alts[1] подставляй что угодно.
Я уже молчу про SEO, они за такое по рукам бить будут.
P.S.
Раз тебе не нужно сбрасывать процесс сохранения, то ты можешь изменить скрипт. Там где проверяется alt на пустоту, вместо $alts[1] подставляй что угодно.
Image SEO alt and title tags
Не самое «быстрое» решение (в плане, плагин обрабатывает каждый вывод), зато самый надежный, если сайт небольшой. Добавляет alt и title ко всем картинкам, и не просто из title страницы, а ищет ближайшие к нему h1/h2/h3 и т.д. В настройках можно это поменять. Я его еще немного допилил для себя, что бы не добавлял альты к определенным директориям.
Не самое «быстрое» решение (в плане, плагин обрабатывает каждый вывод), зато самый надежный, если сайт небольшой. Добавляет alt и title ко всем картинкам, и не просто из title страницы, а ищет ближайшие к нему h1/h2/h3 и т.д. В настройках можно это поменять. Я его еще немного допилил для себя, что бы не добавлял альты к определенным директориям.
Тоже вариант, но далеко не факт что alt должен содержать название заголовка. Alt отображает текстовую информацию о рисунке при отключенной в браузере загрузке изображений. Да и как там роботы воспринимают alt я не знаю. Может для них как раз важно что в alt будет вписан заголовок…
И вообще, это работа менеджера сайта, писать хороший контент правильно. Так что я, например, свое решение установил и себе на сайты, дабы не забывать про alt.
И вообще, это работа менеджера сайта, писать хороший контент правильно. Так что я, например, свое решение установил и себе на сайты, дабы не забывать про alt.
С одной стороны вы правы, на 100%, с другой стороны в спешке не всегда этот альт прописывают менеджеры, а если и прописывают — то полную хрень. В добавок, есть картинки и не из контента (которые вставляет вебмастер) и не всегда можно отследить эти косяки. Можно конечно же допилить подобный плагин и хранить отдельно варнинги о наличии пустых альтов в img в отдельно в таблице…
По этой причине я и написал этот плагин. Менеджеры могут забыть указать альт, но плагин им об этом напомнит и они пройдутся еще раз по всем изображениям и проверят их заполненность. Это их работа, а если уж они пишут там полную хрень, то это вопросы не к плагинам или сниппетам, а к менеджеру сайта. :) На картинки не из контента плагин не обращает внимания, т.к. большинство сайтов работают именно с полем content.
Применив должную фантазию и совсем немного строк кода, можно прописать любую логику в этом плагине и не только в поле content. Это минимум функционала, что-то типа базовой функции. Ну а дальше этот сниппет можно развивать и даже собрать из него дополнение.
Может быть так и произойдет, если найду причины его расширения.
Применив должную фантазию и совсем немного строк кода, можно прописать любую логику в этом плагине и не только в поле content. Это минимум функционала, что-то типа базовой функции. Ну а дальше этот сниппет можно развивать и даже собрать из него дополнение.
Может быть так и произойдет, если найду причины его расширения.
Спасибо за компонент!
Обнаружена ошибка при сохранении ресурса:
Обнаружена ошибка при сохранении ресурса:
PHP message: PHP Fatal error: Uncaught Error: Call to a member function get() on null in /home/s/www/core/cache/includes/elements/modplugin/34.include.cache.php:65
Впервые встречаю такую ошибку в моем компоненте. Если есть возможность выдать мне доступы, чтобы я посмотрел, пиши в личку или в телеге.
t.me/iWatchYouFromAfar
P.S.
Компонент работает только с типом содержимого HTML — чей идентификатор 1 (по умолчанию). Но тут скорее всего дело в другом.
t.me/iWatchYouFromAfar
P.S.
Компонент работает только с типом содержимого HTML — чей идентификатор 1 (по умолчанию). Но тут скорее всего дело в другом.
Спасибо за фидбэк, поправил.
Спасибо за дополнение altHelper!
Заметил такую ошибку при выставлении уровня althelper_alt_from_title.
Если в содержании вставляется не путь к изображению а изображение из ms2gallery, к примеру
Заметил такую ошибку при выставлении уровня althelper_alt_from_title.
Если в содержании вставляется не путь к изображению а изображение из ms2gallery, к примеру
<img class="img-responsive" src="[[+ms2g.0.url]]" alt="" />
то тег alt заполняется, а вот само изображение пропадает. Видимо что-то с рендером страницы при наличии MODX-овских выражений
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.