Drupal 7 theme_image src абсолютный путь от абсолютного URI - PullRequest
0 голосов
/ 12 декабря 2018

В настоящее время рендеринг изображения с использованием:

$desktop_img = theme('image', array(
      'path' => drupal_get_path('module', 'my_awesome_module') . '/images/desktop.png',
      'width' => 20,
      'height' => 20,
      'alt' => t('View pc version'),
    ));

Что отображается как:

<img src="http://myawesome.site/sites/all/modules/custom/my_awesome_module/images/desktop.png" width="20" height="20" alt="View pc version" />

но я хочу:

<img src="/sites/all/modules/custom/my_awesome_module/images/desktop.png" width="20" height="20" alt="View pc version" />

Сейчас у нас есть решение для использования:

function another_awesome_module_file_url_alter(&$uri) {
  // Get outta here if there's an absolute link
  if (strpos($uri, '://') !== FALSE) {
    return;
  }

  // If the path includes references a gif/jpg/png images elsewhere
  if (strpos($uri, conf_path()) !== FALSE ||
      preg_match('/\.(jpg|gif|png)/i', $uri)) {
    $uri = $GLOBALS['base_path'] . ltrim($uri, '/');
  }
}

, чтобы вернуть абсолютные пути для ВСЕХ файлов.Итак, мой вопрос: есть ли дружественный способ сделать это в theme_image только для изображений под рукой, вместо того, чтобы изменять путь для всех файлов?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Используйте функцию base_path () , чтобы получить правильный путь, тогда вы задаете функции темы абсолютный путь.

$desktop_img = theme('image', array(
  'path' => base_path() . drupal_get_path('module', 'my_awesome_module') . 
            '/images/desktop.png',
  'width' => 20,
  'height' => 20,
  'alt' => t('View pc version'),
));

Проблема не в drupal_get_path, он дает относительный путь, в теме изображения.

0 голосов
/ 13 декабря 2018

Вы можете просто добавить косую черту, чтобы начать значение 'path':

$desktop_img = theme('image', array(
      'path' => '/'.drupal_get_path('module', 'my_awesome_module') . '/images/desktop.png',
      'width' => 20,
      'height' => 20,
      'alt' => t('View pc version'),
    ));
...