我在Drupal 7工作,我有一个特定的请求。
我有一个带有多个图像按钮的表单,用作图形栏。我有一个类似的代码:
foreach ($vars as $key => $value) {
$form['graph'][$value] = array(
'#type' => 'image_button',
'#name' => $value,
'#src' => file_create_url($vars[$key]['logo]),
);
}
其中$ vars [$ key] ['logo]例如是 public://file_1.png 等,它完美无缺。
问题是我必须打印出相同的图像按钮,但旋转了90度。 我尝试添加图像样式(logo_rotate),然后执行类似
的操作 foreach ($vars as $key => $value) {
$form['graph'][$value] = array(
'#type' => 'image_button',
'#name' => $value,
'#src' => theme('image_style', array('style_name' => 'logo_rotate', 'path' => $vars[$key]['logo'])),
);
}
这会失败,因为主题功能会打印出完整的HTML格式图像,如下所示:
<img typeof="foaf:Image" src="http://www.example.com/sites/default/files/styles/logo_rotate/public/file_1.png?itok=Y9hQtYZT" alt="" />
和image_button类型的'#src'属性需要该文件的URL。
我只有想法是爆炸<img>
标记字符串来获取src值。
任何想法的家伙?提前致谢!
答案 0 :(得分:0)
我不认为你需要使用主题函数来完成这么简单的任务。
我们知道,对函数file_create_url("public://file_1.png")
的调用会返回:
http://www.example.com/sites/default/files/file_1.png
只需将不同的参数传递给file_create_url
:
file_create_url("public://styles/logo_rotate/public/file_1.png")
你会得到你需要的东西。
foreach ($vars as $key => $value) {
$src = preg_replace('/^public:\/\/(.*)/', 'public://styles/logo_rotate/public/$1', $vars[$key]['logo']);
$src = file_create_url($src);
$form['graph'][$value] = array(
'#type' => 'image_button',
'#name' => $value,
'#src' => $src,
);
}
答案 1 :(得分:0)
根据Drupal API theme_image_size使用此功能
image_style_url($style_name, $path)
在给定样式和图像路径的情况下构建图像衍生的URL。
我认为这就是你所需要的:)