2010-09-03 43 views
0

從之前的question開始的一些後續操作。如何在使用ImageCache創建圖像縮略圖後使用hook_nodeapi

正如我在那個問題中提到的那樣,我的總體目標是在ImageCache完成它的魔術並生成縮略圖和其他內容之後調用Ruby腳本。

Sebi從這個問題的建議涉及使用hook_nodeapi。
不幸的是,我的創建模塊和/或侵入現有模塊的Drupal知識相當有限。

所以,對於這樣的問題:

  1. 我應該創建自己的模塊,或者試圖修改ImageCache模塊?
  2. 我該如何着手將生成的縮略圖路徑(來自ImageCache)傳遞到我的Ruby腳本中?

編輯

我發現這個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'); 
    } 

回答

0
  1. 不要攻入imagecache,記住每一個你砍核心/的contrib模塊神殺死一隻小貓時間;)

  2. 您應該創建調用hook_nodeapi模塊,請查看api文檔以找到腳本的正確入口點,nodeapi適用於各種不同級別的節點進程,因此您必須爲您選擇正確的一個(當您檢查鏈接時應該會變得清晰)http://api.drupal.org/api/function/hook_nodeapi

您將無法調用您顯示的功能,因爲它是私人的,所以您必須找到另一條路線。

你可以嘗試和手動建立路徑,你應該能夠拉出上傳文件的文件名,然後將其附加到目錄結構,很醜但它應該工作。例如

如果上傳的文件名爲test123.jpg,那麼它應該位於/ files/imagecache/thumbnails/test123/jpg(或類似的東西)。

希望它有幫助。