2010-09-03 14 views
0

Un peu d'un suivi d'un précédent question.Comment travailler avec hook_nodeapi après la création d'une vignette d'image avec ImageCache

Comme je l'ai mentionné dans cette question, mon objectif global est d'appeler un script Ruby après qu'ImageCache fasse sa magie avec la génération de miniatures et autres joyeusetés.

La suggestion de Sebi à partir de cette question impliquait l'utilisation de hook_nodeapi. Malheureusement, ma connaissance de Drupal en matière de création de modules et/ou de piratage de modules existants est assez limitée.

Donc, pour cette question:

  1. Dois-je créer mon propre module ou tenter de modifier le module ImageCache?
  2. Comment puis-je obtenir le chemin de vignette généré (à partir de ImageCache) pour passer dans mon script Ruby?

modifier

Je trouve cette question recherche par SO ... Est-il possible de faire quelque chose de similaire dans la fonction _imagecache_cache qui ferait ce que je veux?

-à-dire

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

Répondre

0
  1. Ne pas pirater imagecache, rappelez-vous chaque fois que vous pirater core/contrib modules Dieu tue un chaton;)

  2. Vous devez créer un module qui invoque hook_nodeapi , regardez la documentation de l'api pour trouver le bon point d'entrée pour votre script, nodeapi fonctionne sur différents niveaux du processus de noeud, donc vous devez choisir le bon pour vous (cela devrait devenir clair quand vous vérifiez le lien) http://api.drupal.org/api/function/hook_nodeapi

Vous ne serez pas en mesure d'appeler la fonction que vous avez montrée parce qu'elle est privée, donc vous devrez trouver un autre itinéraire.

Vous pouvez essayer de construire le chemin manuellement, vous devriez être en mesure de retirer le nom de fichier du fichier téléchargé, puis l'ajouter à la structure du répertoire, moche, mais cela devrait fonctionner. par exemple.

Si le fichier téléchargé s'appelle test123.jpg, il devrait être dans/files/imagecache/thumbnails/test123/jpg (ou quelque chose de similaire).

Espérons que ça aide.