2015-01-08 64 views
0

的Drupal 6Drupal的6 - 節點連接的圖像路徑

我在node.tpl.php模板文件使用<?php print $node->content['image_attach']['#value'] ?>檢索圖像和獲取圖像鏈接到它的節點。

如何才能獲取圖像路徑?

編輯:沒有相關的CCK字段。它是圖像附加模塊。請參閱http://imgur.com/YzyUGZU

+0

嗨迪和歡迎來到SO。其中CCK字段類型是'image_attach'?這是一個'文件上傳'字段或'圖像字段'?通常情況下,在一個模板中,應該能夠通過字段的機器名稱(在這個假想的例子中爲'field_with_image')加載圖像字段路徑:'$ field_with_image [0] ['filepath']'。 – Timusan

+0

我無法在內容類型中找到相關的CCK字段,我從創建內容頁面附加該字段的屏幕截圖。 HTTP:// imgur。com/YzyUGZU –

+0

這來自圖像附加模塊並且沒有CCK字段。 –

回答

0

如果我從您的意見中正確理解,可以通過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); 

在這裏,你完全加載所引用的節點並提供其所有信息。

但是,後一種情況會導致不必要的開銷,因爲完全加載節點時不會出現額外的信息。完整參考已由原始node對象內的圖像連接子模塊提供。只要知道Image Attach實際上會創建額外的水下圖像節點,您可以像這樣對待。

+0

非常感謝您在評論中所付出的努力。這真的很有幫助和讚賞。我也想出了這個來檢索圖像路徑。 $ image = $ node-> content [「image_attach」] [「#value」]; preg_match('/(?<= src =「)[^」] * /',$ image,$ img_url); print($ img_url [0]); –

+0

不客氣。關於你自己找到的解決方案的一點批評:你現在使用'regex'來解析路徑。雖然'正規表達式'本身看起來很神奇,但它卻是更黑暗的一面。通常說:*「使用'正則表達式'來解決他們的問題的程序員現在有兩個問題。」*。就你而言,例如,你將無法捕獲不同版本的圖像。或者,如果底層API發生變化,您的'正則表達式'可能不再正確匹配。如果有一個明確的解決方案(通過這種情況下的API),總是優先使用'正則表達式'(他們應該是最後的絕望手段)。 – Timusan