Один документ, несколько типов файлов для загрузки: как управлять?


Я хочу загрузить/прикрепить несколько документов к узлу книги. Каждый документ будет предлагаться в нескольких форматах файлов, например:

  • Отчет2010.pdf
  • Отчет2010.rtf
  • Report2010.doc
  • Соглашение 11.pdf
  • Соглашение 11.rtf
  • Agreement11.doc

Учитывая это, для того, чтобы:

  1. Предложите разумный интерфейс загрузки (например, поле FileField), который позволяет загружать неограниченное количество файлов. закачанный.
  2. Представьте эти файлы для загрузки, например:

Существует ли надежный способ связать различные форматы файлов для каждого документа друг с другом? Под надежным я подразумеваю то, что (например) не зависит от того, чтобы пользователь называл файлы определенным образом, чтобы работа.

Author: dobeerman, 2011-04-10

4 answers

Узел -[тип].tpl.php

$fields = array('field_reports', 'field_agreements'); // you should to create 2 fields for different filenames
$items = array();
foreach($fields AS $field){
  $exts = array();
  foreach($node->{$field} AS $file){
    // delete real extension from file name
    $filename = explode('.', $file['filename']);
    $ext = array_pop($filename);
    $exts[$ext] = l($ext, $file['filepath']);
    $filename = implode('.', $filename);
  }
  ksort($exts);
  $items[] = t('!filename - download as: !links', array('!filename' => $filename, '!links' => implode(', ', $exts)));
}
print theme_item_list($items);

Ховер, этот код должен быть в template.php в функции phptemplate_preprocess_node.

 0
Author: dobeerman, 2011-04-10 02:40:00

Вы можете использовать

Http://drupal.org/project/mimedetect
чтобы убедиться, что файлы имеют правильный тип mime, а затем

Http://drupal.org/project/filefield_paths
http://drupal.org/project/file_aliases
http://drupal.org/project/token

Чтобы переименовать их на основе значений файлов

 0
Author: pasine, 2011-04-10 16:03:49

Модуль Fieldgroup, похоже, делает почти все, что мне нужно: для каждого документа я создаю группу, в которой есть поле файла для каждого типа файла (PDF, DOC, RTF). Это не решает проблему разрешения неограниченного количества файлов, но обходным путем было бы создание нескольких групп, которые разумно подходили бы для большинства сценариев.

 0
Author: Daniel Nitsche, 2011-04-11 03:34:34

Вам следует создать пользовательский форматировщик CCK (начните с filfield_formatter.inc в качестве примера), чтобы выводить файлы так, как вы хотите, без взлома файлов шаблонов.

 0
Author: Jody, 2011-05-01 18:20:09