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

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

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

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

if (isset(field_nianling[LANGUAGE_NONE])) {
    $nianling = $node->field_nianling[LANGUAGE_NONE][0]['value'];
 
}

是可以解决问题,但如果字段多时,代码看起来就不够简洁,而且如果自定义字段是列表字段,就有可能还需要根据列表的 key 获取相应的 value 值。那么有没有更好的方法来获取自定义字段的值呢?
 
Drupal已经给我们提供了一个 <a href="https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_get_items/7">field_get_items</a> 函数,原型如下:
function field_get_items($entity_type, $entity, $field_name, $langcode = NULL)
函数说明:
返回当前语言的此字段项目。
 
参数:
 
$entity_type: The type of $entity; e.g., 'node' or 'user'.
 
$entity: The entity containing the data to be displayed.
 
$field_name: The field to be displayed.
 
$langcode: (optional) The language code $entity->{$field_name} has to be displayed in. Defaults to the current language.
 
Return value
 
An array of field items keyed by delta if available, FALSE otherwise.
 
 
 
得到了 field_get_items 的返回字段项目,就可以使用 <a href="https://api.drupal.org/api/drupal/modules!field!field.module/function/field_view_value/7">field_view_value</a> 来渲染单个项目值:
 
field_view_value($entity_type, $entity, $field_name, $item, $display = array(), $langcode = NULL)
Returns a renderable array for a single field value.
 
Parameters
 
$entity_type: The type of $entity; e.g., 'node' or 'user'.
 
$entity: The entity containing the field to display. Must at least contain the id key and the field data to display.
 
$field_name: The name of the field to display.
 
$item: The field value to display, as found in $entity->field_name[$langcode][$delta].
 
$display: Can be either the name of a view mode, or an array of display settings. See field_view_field() for more information.
 
$langcode: (Optional) The language of the value in $item. If not provided, the current language will be assumed.
 
<strong>返回值 </strong>指定字段的渲染数组
下面是一个显示 field_jinsheng 字段的例子代码:

$jinsheng = field_get_items('node', $node, 'field_jinsheng');
$output = field_view_value('node', $node, 'field_jinsheng', $jinsheng[0]) ;
$output = drupal_render( $output);
print $output;

时间: 2024-11-13 09:04:24

获取Drupal自定义字段值并显示的方法的相关文章

destoon中自定义字段的前台显示,及修改相关属性

在destoon中模块的自定义字段存储在destonn_fields这个表中 自定义字段的前台显示使用的是fields_html这个函数在fields.func.php文件中,这个函数的定义如下, function fields_html($left = '<td class="tl">', $right = '<td>', $values = array(), $fd = array()) { extract($GLOBALS, EXTR_SKIP); if(

jquery获取css的color值返回RGB的方法_jquery

本文实例讲述了jquery获取css的color值返回RGB的方法.分享给大家供大家参考,具体如下: css代码如下: a, a:link, a:visited { color:#4188FB; } a:active, a:focus, a:hover { color:#FFCC00; } js代码如下: var link_col = $("a:link").css("color"); alert(link_col); // returns rgb(65, 136,

asp.net C#获取数据库int字段值方法

private static void 使用原始sql命令打印字段值() { sqlconnection conn = new sqlconnection(@"data source=.sqlexpress;initial catalog=图库;integrated security=true"); try { conn.open(); console.writeline("sucess"); } catch (exception) { console.writel

PHP获取数组最后一个值的2种方法_php技巧

复制代码 代码如下: $array=array(1,2,3,4,5);    echo $array[count($array)-1];//计算数组长度,然后获取数组最后一个元素,如果数组中最后一个元素含有非数字键名,结果可能跟预期不符合    //适用于键名为数字的数组    echo '<br>';    echo end($array);//将数组的内部指针指向最后一个单元,适用于所有数组    总体来说,php的内置函数end还是最好的方法的了.大家可以测试下. PHP取值很容易,可以

WordPress分类目录和标签添加新的自定义字段教程

WordPress的分类目录默认只有名称.别名.父节点和描述这几个字段,有时候我们需要给分类目录拓展一些信息,如想添加一个分类封面图.给分类指定keywords和description等等,这个时候我们就得给分类目录添加自定义字段(或者叫自定义栏目).本文将给你介绍如何给WordPress的分类目录和标签添加新的自定义字段. 下图是WordPress后台的分类目录编辑页面,有心的读者可能注意到,这里多了个分类封面的输入框,这个就是我们所说的给分类目录添加的自定义字段. 插件实现 本文介绍的重点不

在更新新闻中,用DropDownList获取数据库NewsKind字段的值 ASP.NET 2.0 C#

问题描述 在更新新闻中,用DropDownList获取数据库NewsKind字段的值,获得的值不正确,出现错位.在数据库中是国内新闻,而获取后显示为国外新闻.UpdateNews.aspx.cs的代码:protectedvoidPage_Load(objectsender,EventArgse){if(!this.IsPostBack){BindData();}}publicvoidBindNewsKind(){this.DropNewsKinds.DataSource=NewsKinds.Ge

JS使用ajax方法获取指定url的head信息中指定字段值的方法

 这篇文章主要介绍了JS使用ajax方法获取指定url的head信息中指定字段值的方法,实例分析了Ajax操作URL中head信息的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JS使用ajax方法获取指定url的head信息中指定字段值的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码用来获取ajax_info.txt的head信息中的Last modified属性,最后修改时间 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1

多选框 显示被选中-js获取多选框的value值时,老获取不到第一个框的value值,显示为空值。其他的都能获取

问题描述 js获取多选框的value值时,老获取不到第一个框的value值,显示为空值.其他的都能获取 jsp页面中的代码: 承运人: input type="checkbox" name="carrier" id="carrier" value="HU" /> input type="checkbox" name="carrier" id="carrier"

数据表-用ExpandableListView显示数据库的字段值

问题描述 用ExpandableListView显示数据库的字段值 问题是从数据表(person表)读取数据(personname),用ExpandableListView显示数据 这是最后的结果图 写了两个文件PersonActivity和ExpandableAdapter 这两张代码都是写在PersonActivity里面,错误在于这样直接setText就是不行,取不到值,但是之前从person表里面已经读取到了字段,我每一个和TextView和edittext都写了不同的名字,就是直接这样