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
                        (
                        )

                )

        )

)

답변:


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

'und'대신 LANGUAGE_NONE을 사용하는 것이 좋습니다.
qasimzee

나는 내가 죽은 말을 때리고 있다는 것을 알고 있지만, 두 번째 접근 방식을 취하면 404가 아닌 결과를 어떻게 얻을 수 있습니까?
Cameron Kilgore 2014

3

file_entity 모듈을 사용하는 경우 (아마도 미디어 모듈 사용) 프로그래밍 방식으로 파일 / 이미지를 렌더링하는 방법이 궁금 할 수 있습니다.

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

여기서 "field_image"는 필드 이름이고 "summary"는보기 모드입니다.


나를 위해 작동하지만 $ image_entity [ 'file'] [ '# 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

필드 모듈을 사용할 때 이것이 더 낫다는 것을 알았습니다.

페이지 --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']);

도움이 되었기를 바랍니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.