Как работать с hook_nodeapi после создания эскиза изображения с помощью ImageCache - PullRequest
0 голосов
/ 03 сентября 2010

Немного продолжения предыдущего вопроса .

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

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

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

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

1020 * редактировать *

Я нашел этот вопрос , ищущий через 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 голосов
/ 04 сентября 2010
  1. Не взламывайте кеширование изображений, помните каждый раз, когда вы взламываете модули core / contrib, бог убивает котенка;)

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

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

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

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

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

...