Drupal7theme_image-src来自绝对uri的绝对路径



当前使用渲染图像

$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中仅针对手头的图像执行此操作,而不是更改所有文件的路径?

使用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,它给出了一个相对的路径,在图像主题中。

您可以简单地添加一个斜线来开始"路径"值:

$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'),
));

相关内容

  • 没有找到相关文章

最新更新