Название загружаемых картинок транслитом

Главные вкладки

Аватар пользователя Wincert Wincert 23 октября 2009 в 8:20

Всем давно известно, что у изображений на сайтах теги 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], 0strrpos($_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.rar5.5 КБ
Иконка изображения dzhidaj-na-passate.jpg31.26 КБ

Комментарии

Аватар пользователя AndreyY AndreyY 26 февраля 2012 в 17:38

Заменил штатную функцию на авторскую, положил i18n-ascii.txt в корень imagepicker. Русские имена файлов не транслитерируются ;-(

    Выбранный файл не удается скопировать, поскольку не найден файл с таким именем. Проверьте правильность указанного имени файла.
    Ошибка при создании эскиза для заруженного изображения.

Модуль transliteration справился с задачей на ура!