Drupal 7 Получает путь к полю изображения

#drupal #drupal-7

#drupal #drupal-7

Вопрос:

Я хотел бы получить путь к изображению поля. Я нахожусь в узле, и мне нужен URL-адрес изображения, чтобы поместить его в качестве фонового изображения во встроенном css. Я не могу найти решение. Можете ли вы мне помочь?

Ответ №1:

Чтобы получить только путь к изображению из его URI:

file_create_url($node->field_image['und'][0]['uri']);

Более подробную информацию о file_create_url() можно найти здесь: http://api.drupal.org/api/drupal/includes!file.inc/function/file_create_url/7

Чтобы получить путь к изображению, созданному с использованием стиля изображения, из его URI, используйте:

image_style_url($style, $node->field_image['und'][0]['uri']);

Более подробную информацию о image_style_url() можно найти здесь: http://api.drupal.org/api/drupal/modules !изображение!image.module/function/image_style_url/7

Комментарии:

1. Это не учитывает многоязычные поля. Смотрите ответ @Gergely ниже. Даже если вы думаете, что вашему сайту «никогда» не понадобится поддерживать переводы, ПОЖАЛУЙСТА, не делайте этого. Для получения дополнительной информации см. computerminds.co.uk/articles /…

Ответ №2:

Боюсь, ни одно из приведенных выше решений не является правильным. Они не соответствуют стандартам Drupal.

 // field_video_image is the name of the image field

// using field_get_items() you can get the field values (respecting multilingual setup)
$field_video_image = field_get_items('node', $node, 'field_video_image');

// after you have the values, you can get the image URL (you can use foreach here)
$image_url = file_create_url($field_video_image[0]['uri']);
  

Более подробная информация здесь:
http://www.computerminds.co.uk/articles/rendering-drupal-7-fields-right-way

Комментарии:

1. Приведенный выше код идеален. Как правило, большинству людей не нужно было бы делать это, как описано выше, но если вы хотите написать код, который соответствует стандартам Drupal и не будет ломаться, когда что-то меняется или что-то еще, тогда нельзя подчеркивать, насколько это важно. Ссылаться на элементы в коде типа so $object[‘und’][0][‘element’] — крайне плохая практика. Всегда используйте field_get_items или его эквивалент.

2. Это старый вопрос, но поскольку Интернет полон плохих практик, когда дело доходит до получения значений полей в Drupal, этому следует уделить больше внимания, поскольку это правильный путь. Как уже писал Джейми Холлерн, вы НИКОГДА не должны использовать [‘und’] [0], которые многие рекомендуют.

Ответ №3:

Я когда-нибудь использую это:

 $node = node_load($nid);
$img_url = $node->field_userimage['und'][0]['uri'];

<img src="<?php print image_style_url($style, $img_url) ?>" />
  

Комментарии:

1. Вы также можете использовать theme_image_style() вместо жесткого кодирования <img> тегов

2. использование функции темы было бы гораздо предпочтительнее: theme('image_style', array('style_name' => 'name', 'path' => $node->field_userimage['und'][0]['uri'], 'alt' => 'Alt text'));

3. Выглядит красиво. Я должен начать использовать эти функции.

4. В вычисляемом поле я мог получить доступ только к uri поля изображения с помощью этого метода.

Ответ №4:

Вы также можете использовать модуль форматирования URL-адреса изображения. Это позволяет изменить формат поля, чтобы получить только URL:

Настройки поля Drupal

Бонус: он также работает с представлениями:

введите описание изображения здесь

Ответ №5:

чтобы получить URL-адрес в стиле изображения:

 $field = field_get_items('node', $node, 'field_image');
$image_url = image_style_url('landingpage_slider', $field[0]['uri']);