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 回答