带有theme_image_style的Drupal图像按钮

时间:2014-02-21 09:54:32

标签: php drupal drupal-7

我在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值。

任何想法的家伙?提前致谢!

2 个答案:

答案 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。

我认为这就是你所需要的:)