在drupal 7 node.tpl中渲染或打印图像?


16

我试图用tpl为节点设置主题,当我尝试打印图像时,找不到d6中的图像路径。我必须调用哪个函数才能正确输出图像..我的意思是像theme('')这样?

Array
(
    [und] => Array
        (
            [0] => Array
                (
                    [fid] => 13
                    [alt] => 
                    [title] => 
                    [width] => 416
                    [height] => 335
                    [uid] => 1
                    [filename] => Capture2.PNG
                    [uri] => public://Capture2.PNG
                    [filemime] => image/png
                    [filesize] => 215377
                    [status] => 1
                    [timestamp] => 1346837738
                    [rdf_mapping] => Array
                        (
                        )

                )

        )

)

Answers:


33
<?php print render($content['field_image']); ?>

如果要更改图像的显示方式(尺寸,链接等),请在节点类型设置的“管理显示”选项卡中进行设置。

您还可以像这样进行图像缓存预设:

<?php
print theme('image_style', array('path' => $node->field_image[LANGUAGE_NONE][0]['uri'], 'style_name' => [STYLE NAME]));
?>

但这不是推荐的方法!

如果您想通过URI构建URL,

<img src="<?php print file_create_url($node->field_image[LANGUAGE_NONE][0]['uri']); ?>" />

谢谢,您的回答涵盖了所有问题。这应该在drupal.org文档中:)
Serjas 2012年

使用LANGUAGE_NONE而不是'und'总是一个好主意
qasimzee 2014年

我知道我在击败一匹死马,但是如果您采用第二种方法,那么如何确保得到的结果不是404?
Cameron Kilgore 2014年

3

对于那些使用file_entity模块(也许与media模块一起使用)的用户,您可能想知道如何以编程方式呈现文件/图像:

$image = (object) $node->field_image[ LANGUAGE_NONE ][0];
$image_entity = file_view($image, "summary");
echo drupal_render($image_entity);

其中“ field_image”是您的字段名称,“ summary”是您的查看模式。


确实为我工作,但需要设置样式上$ image_entity [“文件”] [“#STYLE_NAME”再次..
雷米

您不应该对语言密钥进行硬编码。
AlxVallejo

1

如果您只想使用在管理显示中为该图像设置的图像样式渲染图像:只需键入 <?php print_render($content['field_image']) ?>

如果要显示具有任何其他图像样式的图像,则具有SUPPOSE:'sales_album',然后键入:

list($albumImage) = field_get_items('node', $album, 'uc_product_image');

$albumImageUrl = file_create_url($albumImage['uri']);

$style_array = array('path' => $albumImage['uri'], 'style_name' => 'sales_album');

$render_album_image = theme('image_style', $style_array);

print $render_album_image;

1

使用field模块时,我发现这样更好:

在页面中--yourcontenttype.tpl.php:

<?php
  $this_field_image = field_view_field('node',$node,'field_image');
  print render($this_field_image);?>
?>

使用field_view_field()提供了其他优势,因此可以设置一系列显示设置:

<?php
  $hide_labels = array('label'=>'hidden');
  $this_field_image = field_view_field('node',$node,'field_image', $hide_labels);
  print render($this_field_image);?>
?>

https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_view_field/7.x


0
$img_url = $node->field_name['und'][$i]['uri'];
print image_style_url("style_name", $img_url);

$i如果您要显示多个图像。您可以使用for循环,例如:

for($i=0;$i < $imageCount; $i++) { /*the above code*/ }

并且$imageCount被上述用于循环作为基本宣告

$images = array();<br>
$imageCount= count($node->field_image['und']);

希望这可以帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.