Представлю простую постановку задачи. Использовать буду Drupal 7. Итак, пусть:
- имеется поле в виде изображения ImageField;
- есть материал, содержащий вышеуказанное.
Нужно избавить рядового пользователя, наполняющего сайт контентом от необходимости заполнять атрибут alt у картинок, выводимых при помощи HTML-тега image.
Решение. Пишем простой модуль, который будет выполнять данные действия. Основной код будет выглядеть примерно вот так:
<?php /* Хук, срабатывающий перед сохранением ноды. */ function MyModule_node_submit($node, $form, &$form_state) { if ( ($node->type === 'MyNode') and (empty($node->field_img_MyPicture['und'][0]) == FALSE) ) : $node->field_img_MyPicture['und'][0]['alt'] = $node->title; endif; } ?>
Здесь MyModule, MyNode, field_img_MyPicture — машинные имена модуля, типа материала и поля соответственно. Разумеется, чтобы была возможность вытянуть атрибут Alt из ImageField, оно само собой должно быть разрешено ещё на этапе проектирования структуры ноды.
Если есть необходимость проверить есть ли значение у CCK-поля, используем вторую проверку после and. Сделал это для того, чтобы не выходило ошибок в случае, когда «необязательно для заполнения».
И наконец, для чего же надо выполнять сие действо. Боты поисковых систем, — без описаний к изображениям они картинки не индексируют. В полной мере высказывание касается Яндекс и Google. Хотя в случае с первым и эти манипуляции могут не помочь.
Источник: sooource.net