Вызов скрипта при загрузке изображения в Drupal - PullRequest
1 голос
/ 25 августа 2010

Я хотел бы вызвать скрипт Ruby, когда пользователь загружает изображение в мой тип контента Drupal.У меня есть поле изображения CCK, которое служит основным изображением, а ImageCache заботится об изменении размера и создании миниатюр для меня.

У меня есть скрипт Ruby, который выполняет некоторые преобразования изображения, однако я не совсемзнаю, как это назвать (на самом деле опыта работы с Ruby нет).В основном сценарий применяет некоторые преобразования изображений, а затем генерирует новое изображение.

Мой вопрос заключается в том, как вызвать этот сценарий из Drupal ... Есть ли какая-то хитрость в отношении загрузки изображений CCK, которую я бы захватил?

1 Ответ

1 голос
/ 26 августа 2010

ImageField использует тот же API, что и FileField.Следовательно, вы можете добавить специальный валидатор для вашего поля загрузки, который будет выполнять некоторые проверки изображения (например, вызывать скрипт ruby).

Я описал это некоторое время назад на Drupal.org, см .: http://drupal.org/node/546146

Однако, для вашего удобства, здесь код.

Во-первых, определите валидатор для формы загрузки:

function example_form_alter(&$form, $form_state, $form_id) {
  if ($form_id != 'ID_OF_YOUR_FORM')
    return;

  $form['FIELDNAME'][0]['#upload_validators']['example_FUNCTIONNAME'] = array();

  return $form;
}

Во-вторых, реализуйте функцию валидатора:

function example_FUNCTIONNAME($field) {
  // variable for error messages
  $errors = array();

  // do some processing on the field
  $filepath = $field->filepath;

  ...

  // in case of error, add error message
  $errors[] = t('Validation failed, because...');

  return $errors;
}

Поместите этот код в пользовательский модуль, ноубедитесь, что ваш модуль вызывается после FileField и ImageField (отрегулируйте вес в системной таблице).

Обновление: Есть еще один способ подключиться к нему.Вы можете использовать hook_nodeapi, чтобы реагировать на операцию «presave».Это также позволяет вам вызывать скрипт для содержимого загруженного поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...