field_get_items() 取得欄位的內容資料

進入 Drupal 7,都被 Fields 包圍著,要想取得一個半個欄位的資料要怎麼做呢?

大家最直接的想法會不會是看看 $node object 中有什麼呢?

debug($node,'',1);

但留意,若果兩者在不同的語言下發佈,是會有差異的:

[und] = "Undetermined" = "LANGUAGE_NONE" (不確定的意思)

 

為了解決上述問題或在複雜的欄位中取得資料,可以用 Fields API 中的 field_get_items()

$items = field_get_items('node', $node, 'field_image');
debug($items,'',1);

是否簡潔很多!

 

大家可能還對 Drupal 中的 Entity / Fields 概念很陌生 (ME TOO!!),簡單說一說:

$items = field_get_items('node', $node, 'field_image');

"node" 是 Entity Type,D7 中的 NODE,COMMENT,USER 都是 Entity Type

"$node" 怎麼來的呢? node.tpl.php 版型中當然不用理會,在其他地方可以使用 node_load, user_load ...取得

"field_image" 是欄位的 Machine Name

** 值得注意這一 Function 還有一個 $langcode = NULL 的參數,可以讓你取得指定語言的內容

好的,給另一例子,假若我想取得某個回應的內容:

$obj = comment_load(1);
$items = field_get_items('comment', $obj, 'comment_body');
debug($items,'',1);

寫下您的回覆

電子郵件不會公開