Drupal → Сохранение файлов, загруженных с помощью One Click Upload, в File/Image field

24.08.2013

Одной из причин, по которой некоторые обходили стороной модуль One Click Upload, это загрузка файлов "в никуда". Т.е. загруженные файлы никак не связанны с тем содержимым, в котором они выводятся и нет способа автоматически удалять эти файлы при удалении содержимого.

С помощью последней dev версии модуля и небольшого количества кода, можно сохранять файлы в любое file или image поле.

Пример сохранения картинок в поле field_inline_images для нод и комментариев:

/**
 * Implements hook_ocupload_files_saved().
 */
function MODULENAME_ocupload_saved_data_alter(&$files, &$form, &$form_state) {
  if (
    isset($form['#entity_type']) &&
    in_array($form['#entity_type'], array('node', 'comment')) &&
    isset($form_state['values']['field_inline_images'])
  ) {
    foreach ($files as $file) {
      $form_state['values']['field_inline_images']['und'][] = array(
        'fid' => $file->fid,
        '_weight' => 100,
      );
    }
  }
}

Замечание: опция Delete unused files в настройках модуля должна быть включена.

Добавлено 23.04.2015: в версии 2.x возможность прикреплять файлы к полям доступна из админки.

Написанное актуально для
One Click Upload 7.x-1.x-dev
Похожие записи

Комментарии

Огромное спасибо! Давно пользуюсь твоим модулем, а теперь станет еще приятней им пользоваться =)

Спасибо за модуль, есть один вопрос: можно ли подружить one click upload с imagefield tokens при помощи этого хука?

василий
06.12.2013, 14:10

Я так понимаю для блоков это работать не будет?

если у вас получится добавить блоку поле, то будет

Добавить комментарий