Как работать с hook_nodeapi после создания эскиза изображения с помощью ImageCache

Небольшое продолжение предыдущего вопроса.

Как я уже упоминал в этом вопросе, моя общая цель — вызвать сценарий Ruby после того, как ImageCache сделает свое волшебство, создав эскизы и еще много чего.

Предложение Себи из этого вопроса касалось использования hook_nodeapi.
К сожалению, мои знания Drupal о создании модулей и/или взломе существующих модулей довольно ограничены.

Итак, по этому вопросу:

  1. Должен ли я создать свой собственный модуль или попытаться изменить модуль ImageCache?
  2. Как мне передать сгенерированный путь эскиза (из ImageCache) в мой скрипт Ruby?

изменить

Я нашел этот вопрос, просматривая ТАК... Можно ли сделать что-то подобное в функции _imagecache_cache, которая делала бы то, что я хочу?

ie

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');
  }

person the_e    schedule 03.09.2010    source источник


Ответы (1)


  1. Не взламывайте imagecache, помните, что каждый раз, когда вы взламываете модули core/contrib, бог убивает котенка ;)

  2. Вам следует создать модуль, который вызывает hook_nodeapi, просмотреть документацию по API, чтобы найти правильную точку входа для вашего скрипта, nodeapi работает на разных уровнях процесса node, поэтому вам нужно выбрать правильный для вас (это должно стать ясно, когда вы проверяете ссылку) http://api.drupal.org/api/function/hook_nodeapi< /а>

Вы не сможете вызвать функцию, которую вы показали, потому что она частная, поэтому вам придется найти другой маршрут.

Вы можете попробовать создать путь вручную, вы должны иметь возможность вытащить имя загруженного файла, а затем добавить его в структуру каталогов, некрасиво, но это должно работать. например

Если загруженный файл называется test123.jpg, то он должен находиться в /files/imagecache/thumbnails/test123/jpg (или что-то подобное).

Надеюсь, поможет.

person digital    schedule 04.09.2010