当前位置:首页 > CMS教程 > 其它CMS > 列表

获取Drupal自定义字段值并显示的方法

发布:smiling 来源: PHP粉丝网  添加日期:2015-12-07 13:09:44 浏览: 评论:0 

Drupal有很强大的自定义字段的功能,如果我们要将自定义字段的值打印出来,直接 $nianling = $node->field_nianling[LANGUAGE_NONE][0]['value']; 可能会出错,现在我们来介绍一个更好的方法.

在Drupal获取一个自定义字段的值最常用的方法是:

$nianling = $node->field_nianling[LANGUAGE_NONE][0]['value'];

不过当field_nianling内容为空时,会出现类似这样的错误:Notice:Undefined index: value in eval(),如果我们在在取值之前加个判断,如这样:

  1. if (isset(field_nianling[LANGUAGE_NONE])) { 
  2.     $nianling = $node->field_nianling[LANGUAGE_NONE][0]['value']; 
  3. //phpfensi.com 

是可以解决问题,但如果字段多时,代码看起来就不够简洁,而且如果自定义字段是列表字段,就有可能还需要根据列表的 key 获取相应的 value 值。那么有没有更好的方法来获取自定义字段的值呢?

Drupal已经给我们提供了一个

  1. <a href="https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_get_items/7">field_get_items</a>  

函数,原型如下:

  1. function field_get_items($entity_type$entity$field_name$langcode = NULL) 

函数说明:

返回当前语言的此字段项目.

参数:

  1. $entity_type: The type of $entity; e.g., 'node' or 'user'
  2.  
  3. $entity: The entity containing the data to be displayed. 
  4.  
  5. $field_name: The field to be displayed. 
  6.  
  7. $langcode: (optional) The language code $entity->{$field_name} has to be displayed in. Defaults to the current language. 
  8.  
  9. Return value 
  10.  
  11. An array of field items keyed by delta if available, FALSE otherwise. 

得到了 field_get_items 的返回字段项目,就可以使用:

  1. <a href="https://api.drupal.org/api/drupal/modules!field!field.module/function/field_view_value/7">field_view_value</a> 

来渲染单个项目值:

  1. field_view_value($entity_type$entity$field_name$item$display = array(), $langcode = NULL) 
  2. Returns a renderable array for a single field value. 
  3.  
  4. Parameters 
  5.  
  6. $entity_type: The type of $entity; e.g., 'node' or 'user'
  7.  
  8. $entity: The entity containing the field to display. Must at least contain the id key and the field data to display. 
  9.  
  10. $field_name: The name of the field to display. 
  11.  
  12. $item: The field value to display, as found in $entity->field_name[$langcode][$delta]. 
  13.  
  14. $display: Can be either the name of a view mode, or an array of display settings. See field_view_field() for more information. 
  15.  
  16. $langcode: (Optional) The language of the value in $item. If not provided, the current language will be assumed. 

返回值指定字段的渲染数组

下面是一个显示 field_jinsheng 字段的例子代码:

  1. $jinsheng = field_get_items('node'$node'field_jinsheng'); 
  2. $output = field_view_value('node'$node'field_jinsheng'$jinsheng[0]) ; 
  3. $output = drupal_render( $output); 
  4. print $output;

Tags: Drupal自定义 Drupal字段值

分享到: