Drupal 6 - путь к приложенному узлу изображения

0

Drupal 6

Я использую <?php print $node->content['image_attach']['#value']?> В node.tpl.php шаблона node.tpl.php чтобы получить изображение и связать изображение с его узлом.

Как я могу получить только путь к изображению?

EDIT: Не существует соответствующего поля CCK. Это модуль прикрепления изображения. См. Http://imgur.com/YzyUGZU

  • 0
    Привет Ди и добро пожаловать в ТАК. К какому типу поля CCK относится image_attach ? Это поле file upload или image field ? Вы нормально, внутри шаблона, должны быть в состоянии загрузить путь поля изображения через имя машины месторождения ( field_with_image в этом воображаемом случае): $field_with_image[0]['filepath'] .
  • 0
    Я не могу найти соответствующее поле CCK в типах контента, я прилагаю скриншот для поля со страницы создания контента. imgur.com/YzyUGZU
Показать ещё 1 комментарий
Теги:
image
path
drupal-6

1 ответ

0
Лучший ответ

Если я правильно понимаю ваши комментарии, вы присоединяете изображение к узлу через подмодуль Image Attach модуля Drupal 6 Image.

Как работает этот подмодуль, когда вы прикрепляете изображение к своему узлу, он сначала создает новый узел для этого изображения и присоединяет этот новый узел к вашему исходному узлу. Аналогично тому, как "современные" сущности ссылаются на Drupal 7 и 8.

Вы можете подтвердить, что прикрепление изображения создает новый узел с помощью своего admin/content/node Обзора и увидеть новый узел типа image появляется в списке.

Самый простой способ получить информацию об этом узле - это получить его из информации о текущем объекте node:

$paths = $node->image_attach[0]->images

Это позволит получить набор путей к различным версиям изображения. Например:

$original_path = $node->image_attach[0]->images['_original']

Будет ссылаться на ваше исходное, неизмененное изображение, тогда как:

$thumbnail_path = $node->image_attach[0]->images['thumbnail']

Будет ссылаться на его миниатюру (если имеется).

Как вы знаете, подмодуль Image Attach позволяет вам добавлять несколько изображений на ваш узел. В моем примере я слепо взял первое изображение, используя [0]. Если у вас есть несколько изображений, вы должны, конечно, перебирать различные записи, присутствующие в вашем массиве image_attach.

Если вы хотите получить еще больше информации о каждом узле изображения, прикрепленном к исходному узлу, вы также можете загрузить фактический узел и работать с ним:

$nid = $node->image_attach[0]->nid;
$image_node = node_load($nid);

Здесь вы полностью загружаете ссылочный узел и имеете всю доступную информацию.

Последний случай, однако, вызовет ненужные накладные расходы, поскольку при полной загрузке узла нет дополнительной информации. Полная ссылка уже предоставляется подмодулем Image Attach внутри исходного объекта node. Просто знайте, что Image Attach фактически создает дополнительные узлы изображения под водой, которые вы можете рассматривать как таковые.

  • 0
    Большое спасибо за усилия, которые вы вложили в свой комментарий. Это было действительно полезно и ценится. Я также придумал это, чтобы получить путь к изображению. $ image = $ node-> content ["image_attach"] ["# value"]; preg_match ('/ (? <= src = ") [^"] * /', $ image, $ img_url); печать ($ img_url [0]);
  • 0
    Добро пожаловать. Одно критическое замечание о вашем собственном найденном решении: теперь вы используете regex для анализа пути. Хотя само regex кажется магией, это магия темной стороны. Часто говорят: «У программиста, который использует regex для решения своей проблемы, теперь есть две проблемы». , В вашем случае, например, вы не сможете захватывать разные версии изображения. Или, если базовый API изменяется, ваше regex может больше не соответствовать. Если есть четкое решение (в данном случае через API), всегда предпочитайте это использованию regex (они должны быть последним, отчаянным средством).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню