在Drupal中调用图像上传脚本

时间:2010-08-25 12:56:18

标签: ruby drupal-6 imagemagick

当用户将图像上传到我的Drupal内容类型时,我想调用Ruby脚本。我有一个CCK图像字段作为主图像,ImageCache负责调整大小并为我创建缩略图。

我有一个Ruby脚本对图像进行了一些转换,但是我并不知道如何调用它(没有真正使用Ruby的经验)。基本上,脚本应用一些图像变换,然后生成新图像。

我的问题是如何从Drupal调用这个脚本...是否有关于我将劫持的CCK图像上传的某种钩子?

1 个答案:

答案 0 :(得分:1)

ImageField使用与FileField相同的API。因此,您可以为上载字段添加自定义验证器,这将对映像进行一些检查(如调用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”做出反应。这也允许您调用上传字段内容的脚本。