1

多言語サイトで Drupal のアップロード パスに問題があります。新しい言語を作成しましたが、画像のソースにバックスラッシュがないため、機能しません。

私の関数は次のコードを使用します。

variable_get('file_public_path', drupal_get_path('theme', $theme) . '/uploads').'/';

次のものを使用すると、動作します。

    '/' . variable_get('file_public_path', drupal_get_path('theme', $theme) . '/uploads').'/';

これは一種の醜い解決策であり、これに対処するもっとエレガントな方法があるに違いありません。

4

1 に答える 1

1

コードの代わりに、パブリック パスに保存されている画像の URL を取得する方法は次のとおりです。(「image.png」を正しいファイル名に置き換えてください。)

$image_url = file_create_url(variable_get('file_public_path', conf_path() . '/files') . '/image.png');

コードでは、先頭にスラッシュを使用する必要があります。そうしないと、パスはサーバー ドキュメント ディレクトリからの相対パスと見なされません。
Drupal サイトの言語としてイタリア語を有効にしたとします。ページの URL はhttp://example.com/it/pageで、画像は sites/default/files/image.png に保存されます。スラッシュがない場合、画像の URL はブラウザーからはhttp://example.com/it/sites/default/files/image.pngと見なされます。スラッシュを使用すると、ブラウザからの画像 URL はhttp://example.com/sites/default/files/image.pngと見なされます。

ちなみに、「file_public_path」Drupal 変数のデフォルト値は ですvariable_get('file_public_path', conf_path() . '/files'これがsystem_file_system_settings()で使用されるデフォルト値です。

  $form['file_public_path'] = array(
    '#type' => 'textfield', 
    '#title' => t('Public file system path'), 
    '#default_value' => variable_get('file_public_path', conf_path() . '/files'), 
    '#maxlength' => 255, 
    '#description' => t('A local file system path where public files will be stored. This directory must exist and be writable by Drupal. This directory must be relative to the Drupal installation directory and be accessible over the web.'), 
    '#after_build' => array('system_check_directory'),
  );
于 2012-04-05T20:46:14.537 に答える