Всем давно известно, что у изображений на сайтах теги alt и title имеют важную роль для сео и в них нужно вставлять ключевые слова. Еще ходит такой слух, что если в имя этого изображения вставить ключевые слова транслитом (imya.jpg), то это тоже будет небольшой плюс. Насколько это оправданно не знаю, но начал использовать на одном сайте именно такие имена для изображений (imenno-takie-imena.jpg). Задавал имена вручную, и мне это быстро надоело. Решил приспособить для этого всеми нами любимый Imagepicker. Спасибо автору за этот прекрасный модуль!
Итак что я сделал:
— Качнул Imagepicker отсюда http://drupal.org/project/imagepicker релиз 6.x-2.5 от 2009-Oct-03;
— Расковырял его, нашел там как и где формируются имена для загружаемых изображений;
— Простая рукописная функция транслита никак не хотела работать, я не знаю как устроен друпал и почему у меня так и не получилось изменить переменную (транслитиризировать) простыми php функциями, может нельзя использовать русские буквы в модулях? Пришлось расковырять модуль pathauto (ведь он умеет алиасы транслитить) и взять способ транслита оттуда;
— В итоге изменен один файлик модуля - imagepicker.upload.inc и добавлен i18n-ascii.txt, оба этих файла вы найдете в прикрепленном архиве;
— Копируете их в папку с модулем, заменяя файл imagepicker.upload.inc и все работает!
Если вы вдруг забываете ввести "Заголовок" при загрузке изображения, то файл сохранится с тем именем, которое у него стоит изначально.
Кто все-таки не понял что делает эта модификация, прикрепляю картинку:
Обратите внимание на имя этой картинки в директории http://www.drupal.ru/files/dzhidaj-na-passate.jpg и на теги alt и title, вот именно это и будет делать модифицированный Imagepicker.
Еще рекомендуют в атрибуты alt и title вставлять разный текст с ключевыми словами, но я почти всегда вставляю одинаковый.
А теперь код, который я изменил в файле imagepicker.upload.inc, может кому нибудь будет интересно, это всего одна функция:
<?php
function imagepicker_get_uploaded_file_name($destination, $name) {
$fileext = imagepicker_get_uploaded_file_extension($name);
if (
FALSE !== strpos($_FILES['files']['name'][$name], '.')) {
$filename = drupal_substr($_FILES['files']['name'][$name], 0, strrpos($_FILES['files']['name'][$name], '.'));
}
else {
$filename = $_FILES['files']['name'][$name];
}
if (
strlen($_POST["title"]) > 1) {
$filename = $_POST["title"];
static
$i18n_loaded = false;
static $translations = array();
if (!
$i18n_loaded) {
$path = drupal_get_path('module', 'imagepicker');
if (is_file($path .'/i18n-ascii.txt')) {
$translations = parse_ini_file($path .'/i18n-ascii.txt');
}
$i18n_loaded = true;
}
$filename = strtr($filename, $translations);
$filename = drupal_strtolower($filename);
$filename = preg_replace('/[^a-zA-Z0-9]+/', '-', $filename);
}
$file = $filename . $fileext;
$i = 0;
while (file_exists($destination . $file)) {
$i++;
$file = $filename .'_'. $i . $fileext;
}
$file = str_replace("-.", ".", $file);
return $file;
}
?>
Конец!
Вложение | Размер |
---|---|
addedtoimagepicker.rar | 5.5 КБ |
dzhidaj-na-passate.jpg | 31.26 КБ |
Комментарии
Откройте для себя модуль transliteration
Опять поспешил... Не знал про него, буду знать.
Уж лучше бы прикрутил этот модуль на кнопку буедитора и чтоб в опера работал.
Заменил штатную функцию на авторскую, положил i18n-ascii.txt в корень imagepicker. Русские имена файлов не транслитерируются ;-(
Ошибка при создании эскиза для заруженного изображения.
Модуль transliteration справился с задачей на ура!