0

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を使用できます。

素晴らしい=)

4

1 に答える 1

0
<?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
           );
       }
} ?>
于 2012-05-24T17:44:45.887 に答える