Тип поля Upload: File Name в модуле Views

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

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 13 июня 2006 в 11:08

Давно стояла задача сделать возможным вывод списка материалов в табличном виде так, чтобы там были поля с файлами, прикрепленными к материалу (модуль upload). Это уже обсуждалось здесь - http://drupal.htdogs.ru/node/389
Предлагались разные интересные варианты, но хотелось бОльшей универсальности.

Теперь вот вернулся к этой задаче и сделал новый тип поля для модуля Views. Все оказалось довольно просто: функция upload_views_tables() описывает поля базы данных, а views_handler_field_filename() - вывод значения поля.

Это, конечно, только первоначальная версия и тут есть над чем работать дальше, но возможно, это будет полезно и другим участникам. Можно скачать файл (http://drupal.htdogs.ru/files/views_upload.zip) или скопировать нижеследующий код в файл views_upload.inc. Файл надо положить в /modules/views/modules/.
В разделе Fields/Add Field появится поле "Upload: File Name". Если сразу не сработает, то выключить, а затем вновь включить модули upload и views.

<?php
function upload_views_tables() {
  $tables['files'] = array(
    'name' => 'files',
    'provider' => 'internal',
    'join' => array(
      'left' => array(
        'table' => 'node',
        'field' => 'nid'
      ),
      'right' => array(
        'field' => 'nid'
      ),
    ),
    'fields' => array(
      'filename' => array(
        'name' => t('Upload: File Name'),
        'sortable' => true,
        'handler' => 'views_handler_field_filename',
        'option' => string,
        'help' => t('This will display the file name.'),
       ),
    ),
  );
  return $tables;
}

function views_handler_field_filename($fieldinfo, $fielddata, $value, $data) {
 return l($value, 'files/'.$value);
}

Комментарии

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 13 июня 2006 в 11:13

Прикрепил бы файлик здесь, но получаю сообщение о превышении лимита на объем прикрепляемых файлов. То ли прав мне недодано, то ли 552 байта серверу не потянуть... Smile

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 14 июня 2006 в 23:43

Хм, в CVS обновился Views. Полез смотреть, не добавили ли поддержку views_upload Smile Не добавили.
Но обнаружил, что в issues к этому модулю ( http://drupal.org/project/issues/views?states=8,13,14 ) некто gordon уже 1 неделю и 2 дня как выложил views_upload.inc ( http://drupal.org/files/issues/views_upload.inc ), который решает эту задачу. Причем более развернуто, чем мой доморощенный "инклюд" - три поля (Id, Path и Name c/без ссылки) вместо одного, возможность фильтровать по "Listed in file downloads" (файл в списке прикрепленных) и "Has file downloads" (материал имеет прикрепленные файлы).

Не понимаю, почему его не добавили к CVS-версии? Все вроде работоспособно.
Немного обидно, что опередили :-), но рад, что нашел, как искать "неофициальные" фичи модулей. Там, кстати, есть еще несколько feature (фич), в частности показ анонсов и основного текста (teaser & body).