Drupal 如何得到欄位的值?

多重閱讀發表於2018-07-14

直接的方法如下:

$node = node_load($nid);
$field_val = $node->field_name['und'][0]['value'];

用這個方法來獲取欄位的值有幾個問題:

  • 多語言無法處理
  • 文字欄位是[0][‘value’],但其他型別的欄位並不適用,例如引用欄位就是 [0][‘target_id’]

下面適用api方法獲取欄位值:

$node = node_load($nid);
$fields = field_get_items('node', $node, 'field_name');
$field_wrap = field_view_value('node', $node, 'field_name', $fields[0]);
$fval = $field_wrap['#markup'];

從上面可以看出,Drupal為了封裝node介面,引入很多介面函式,並沒有簡化問題。這些複雜性只有在處理多個場景時才會體現出優勢,通常遇到的問題並不複雜,因此適用Drupal的api反而增加了複雜性。

相關文章