візуалізувати або друкувати зображення в drupal 7 node.tpl?


16

Я намагаюся тему вузла за допомогою tpl, і коли я намагався надрукувати зображення, я не можу знайти шлях зображення, як у d6 .. яку функцію мені потрібно викликати, щоб правильно вивести зображення .. Я маю на увазі щось на зразок теми ('')?

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]));
?>

Але це не рекомендований спосіб!

якщо ви хочете створити URL-адресу з URI,

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

дякую, ваша відповідь охоплює всі речі. Це має бути в документації на
drupal.org

Завжди корисно використовувати LANGUAGE_NONE замість 'und'
qasimzee

Я знаю, що б'ю мертвого коня, але якщо ви скористаєтесь другим підходом, як ви можете запевнити, що ви отримаєте результат, який не 404?
Камерон Кілгоре

3

Тим, хто використовує модуль file_entity (можливо, медіа- модуль), вам може бути цікаво, як програматично зобразити файли / зображення:

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

Де "field_image" - назва вашого поля, а "резюме" - ваш режим перегляду.


працює для мене, але потрібно встановити стиль на $ image_entity ['файл'] ['# style_name'] знову ..
rémy

Ви не повинні жорстко кодувати мовний ключ.
AlxVallejo

1

Якщо ви хочете просто візуалізувати зображення за допомогою стилю зображення, встановленого для цього зображення, в управлінському дисплеї: Просто введіть <?php print_render($content['field_image']) ?>

Якщо ви хочете відобразити зображення в будь-якому іншому стилі зображення, у вас є ПІДТРИМКА: '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($i=0;$i < $imageCount; $i++) { /*the above code*/ }

і $imageCountв основному оголошено вище для циклу як

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

Сподіваюся, це допомагає!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.