imagecacheモジュールがsites/allの下にあるマルチサイト設定があります。私の目標は、すべてのサイトが、そのサイトに属するリクエストで満たされた独自のimagecacheフォルダーを持つことです。たとえば、domain1 / imagecache / files / thumb_image / photos/bigavatar.jpgでそれらを参照します。
写真フォルダはFTP経由でアップロードされているため、drupalは基本的に(データベースに関して)それを認識しませんが、フォルダがsites / default / files / photosの下にあり、default / imagecache / files / thumb_image / photos /で参照されている場合、imagecacheは完全に機能します。 bigavatar.jpg。
オプションの設定を探しました-サイトのアップロードパスが変更された場合、imagecacheはそれで機能することがわかりましたが; 私の(JS)画像ストアの場合、ギャラリーに送信されたストアデータは、私自身のモジュールximagegalleryから取得されます。パスは次のように生成されます。
<?php
/**
* @param title : visible gallery title
* @param basename filename base of image
* @param site current site (commonly guessed from REQUEST_URI but goal is to let this be configurable)
* @param location path of $basename imagefile underneath sites/$site/
*/
function ximagegallery_get_object($title, $basename, $site, $location) {
return array(
"title" => $title,
"link" => "{$site}{$location}/{$basename}",
"screenpath" => "{$site}/imagecache/screen{$location}{$basename}",
"thumbpath" => "{$site}/imagecache/small_thumb{$location}{$basename}"
);
}
?>
Imagecacheは、ファイルシステム構成のupload-pathでのみ機能します。これを超えて、2つのサイトが共通のギャラリー/ imagefolderを共有する必要がある場合など、imagecacheが任意の場所に応答するようにします。
編集; 解決策は、派生モジュールからimagecache関数を呼び出して、別のhook_menuを作成することだと思いました-すでに依存関係があるので、これは私が推測する目的のために十分にモジュール化されます
<?php
function ximagegallery_menu() {
// standard route hook
$items['ximagegallery/store/%'] = array(
'title' => 'ximagegallery_GENERATE',
'page callback' => 'ximagegallery_generate_store',
'page arguments' => array(1),
'access callback' => 'ximagegallery_access'
);
// one hook for each configured path
$hooks = get_variable('ximagegallery_folderhooks', array());
foreach($hooks as $folder) {
$items['$folder.'/imagecache'] = array(
'page callback' => 'imagecache_cache',
'access callback' => '_imagecache_menu_access_public_files',
'type' => MENU_CALLBACK
);
}
} ?>
私のfolderhooksに「domain2/foo / bar」が含まれている場合、これによりhttp://domain.tld/drupal/?q=domain2/foo/bar/imagecache/myimagefolder/galleryid/photo.jpgを使用できます。
素晴らしい=)