Давно стояла задача сделать возможным вывод списка материалов в табличном виде так, чтобы там были поля с файлами, прикрепленными к материалу (модуль 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.
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);
}
Комментарии
Прикрепил бы файлик здесь, но получаю сообщение о превышении лимита на объем прикрепляемых файлов. То ли прав мне недодано, то ли 552 байта серверу не потянуть...
можно закачать хоть куда, а здесь кинуть ссылку...
Ну я собственно так и сделал - в теле сообщения дал ссылку на файл http://drupal.htdogs.ru/files/views_upload.zip , но хотелось бы и здесь иметь возможность прикреплять файлы.
Хм, в CVS обновился Views. Полез смотреть, не добавили ли поддержку views_upload Не добавили.
Но обнаружил, что в 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).