当用户将图像上传到我的Drupal内容类型时,我想调用Ruby脚本。我有一个CCK图像字段作为主图像,ImageCache负责调整大小并为我创建缩略图。
我有一个Ruby脚本对图像进行了一些转换,但是我并不知道如何调用它(没有真正使用Ruby的经验)。基本上,脚本应用一些图像变换,然后生成新图像。
我的问题是如何从Drupal调用这个脚本...是否有关于我将劫持的CCK图像上传的某种钩子?
答案 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”做出反应。这也允许您调用上传字段内容的脚本。