Drupal 7 - Темизация файлового поля (file field)

По-умолчанию функция темизации файлового поля theme_file_link() выводит иконку файла, соответствующую mime типу файла, и ссылку на сам файл. Директория расположения иконок - modules/file/icons. Для добавления расширенной разметки вывода файлового поля нужно добавить следующий код в template.php файл используемой темы:


/**
 * Implements theme_file_link().
 */
function MYTHEME_file_link($variables) {
  
  $file = $variables['file'];
  $icon_directory = $variables['icon_directory'];
  // При необходимости используем свои иконки
  //$icon_directory = drupal_get_path('theme', 'MYTHEME') . 'images/file-icons';

  $url = file_create_url($file->uri);
  $icon = theme('file_icon', array('file' => $file, 'icon_directory' => $icon_directory));

  // Set options as per anchor format described at
  // http://microformats.org/wiki/file-format-examples
  $options = array(
    'attributes' => array(
      'type' => $file->filemime . '; length=' . $file->filesize,
    ),
  );

  $link_text = $file->filename;
  $options['attributes']['title'] = check_plain($file->filename);
  $output = '';
  // Вывод имени файла 
  $output = '<div id="file-name"><b>Имя файла: </b>' . $file->filename . '</div>';
  // Вывод размера файла, используя format_size() для форматирования размера
  $output .= '<div id="file-size"><b>Размер: </b>' . $file->filesize . ' байт <b>(' . format_size($file->filesize) . ')</b></div>';
  if (!empty($file->description)) { 
    // Вывод описания файла
    $output .= '<div id="file-description"><b>Описание файла: </b>' . $file->description . '</div>';
  }
  // Вывод даты добавления файла, используя format_date() для форматирования $file->timestamp
  $output .= '<div id="file-date"><b>Добавлен: </b>' . format_date($file->timestamp, 'custom', 'd/m/Y') . '</div>';
  // Вывод иконки и ссылки на файл
  $output .= '<div id="file-download"><b>Скачать: </b>' . $icon . ' ' . l($link_text, $url, $options) . '</div>';

  return $output;
}

После сохранения файла и сброса кэша файловое поле будет выглядеть следующим образом:

file-link_0.png