使用ImageCache创建图像缩略图后如何使用hook_nodeapi

时间:2010-09-03 11:17:48

标签: drupal drupal-6 drupal-modules drupal-hooks

以前question的一些后续内容。

正如我在那个问题中所提到的,我的总体目标是在ImageCache通过生成缩略图等等之后调用Ruby脚本。

Sebi从这个问题的建议涉及使用hook_nodeapi 遗憾的是,我的Drupal创建模块和/或入侵现有模块的知识非常有限。

所以,对于这个问题:

  1. 我应该创建自己的模块还是尝试修改ImageCache模块?
  2. 如何将生成的缩略图路径(来自ImageCache)传递到我的Ruby脚本?

  3. 修改

    我发现这个question正在搜索SO ... 是否可以在_imagecache_cache函数中执行类似的操作以实现我想要的功能?

    function _imagecache_cache($presetname, $path) {
      ...
      ...
      // check if deriv exists... (file was created between apaches request handler and reaching this code)
      // otherwise try to create the derivative.
      if (file_exists($dst) || imagecache_build_derivative($preset['actions'], $src, $dst)) {
        imagecache_transfer($dst);
    
        // call ruby script here
        call('MY RUBY SCRIPT');
      }
    

1 个答案:

答案 0 :(得分:0)

  1. 不要破解图像缓存,记住每次你攻击核心/贡献模块时,上帝会杀死一只小猫;)

  2. 您应该创建一个调用hook_nodeapi的模块,查看api文档以找到脚本的正确入口点,nodeapi可以在节点进程的各个不同级别上运行,因此您必须为您选择正确的一个(当您检查链接时,它应该变得清晰)http://api.drupal.org/api/function/hook_nodeapi

  3. 您将无法调用您显示的功能,因为它是私有的,因此您必须找到另一条路线。

    您可以尝试手动构建路径,您应该能够提取上传文件的文件名,然后将其附加到目录结构,丑陋但它应该可以工作。 e.g。

    如果上传的文件名为test123.jpg,那么它应该在/ files / imagecache / thumbnails / test123 / jpg(或类似的东西)中。

    希望它有所帮助。