web-dev-qa-db-ja.com

Scald IDから画像を参照する

サービス(7.x-3.7)モジュールを使用してREST APIをWebサイトのコンテンツに提供しています。ただし、画像の返却に問題があります。Scald(7.x-3.7- 1.1)メディアアイテムを管理します。つまり、ノード(example.com/rest/node/25592)を取得しようとすると、問題のノードの各フィールドが、JSONでうまくラップされていますが、画像ではなく画像が取得されます。パスとファイル名次のようにして、Scald IDを取得します。

field_event_image: {
und: [1]
0: {
sid: "15775"
}-
-
}

クライアントアプリケーションは、SIDからイメージパスをどのように参照できますか? example.com/atom/15775を使用できることはわかっていますが、これには画像を含むテーマ化されたノードページが返されます-これにはメニューとデフォルトのテーマ要素が含まれているため、ソースから画像パスを取得するのは簡単ではなく効率的でもありません。これは、クライアント側の構文解析で実行できます。私が探しているのは、SIDを直接使用してイメージパスを参照する方法です。 API呼び出しの数を最小限に抑えるようにしています。あるいは、イメージパスを返すようにサービスモジュールを構成する方法はありますか?

2
James Sweeney

方法が見つかりました–これは、指定されたsidから画像のURLと画像のhtmlを取得する方法です。

if(isset($vars['node']->field_teaserbild['und'][0]['sid'])) {

    $img = $vars['node']->field_teaserbild['und'][0]['sid'];
    $atom = scald_atom_load($img);
    $image_uri = $atom->base_entity->uri;
    $vars['img_style_url'] = image_style_url('my_img_style', $image_uri); // style_url
    $vars['img_html'] = theme('image_style', array('style_name' => 'my_img_style', 'path' => $image_uri)); // html

}

誰かがまだ答えを望んでいる場合に備えて…

1
tillinberlin