2015-01-08 6 views
0

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

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

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

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

+0

Hi Dee и добро пожаловать в SO. Из какого типа поля CCK является 'image_attach'? Это поле «загрузка файла» или поле «изображение»? Как правило, внутри шаблона должна быть возможность загрузить путь поля изображения с помощью машинного имени поля ('field_with_image' в этом мнимом случае):' $ field_with_image [0] ['filepath'] '. – Timusan

+0

Я не могу найти связанное поле CCK в типах контента, я прикрепляю снимок экрана для поля на странице создания контента. Http: // Imgur.com/YzyUGZU –

+0

Это происходит из изображения Присоедините модуль и не имеет поля CCK. –

ответ

0

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

Как работает этот подмодуль, когда вы прикрепляете изображение к своему узлу, он сначала создает новый узел для этого изображения и прикрепляет этот новый узел к исходному узлу. Аналогично тому, как работают «современные» сущности в 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); print ($ img_url [0]); –

+0

Добро пожаловать. Один момент критика по вашему собственному найденному решению: теперь вы используете 'regex' для анализа пути. В то время как 'regex' сам по себе кажется магией, это волшебство более темной стороны. Часто говорят: * «Программист, который использует' regex' для решения своей проблемы, теперь имеет две проблемы. * *. В вашем случае вы, например, не сможете захватывать разные версии изображения. Или, если базовый API изменится, ваше 'regex' может не соответствовать правильно. Если в этом случае есть ясное решение (через API), всегда предпочитайте, чтобы с помощью 'regex' (они должны быть последним, отчаянным курортом). – Timusan

Смежные вопросы