Drupal有很強(qiáng)大的自定義字段的功能,如果我們要將自定義字段的值打印出來(lái),直接 $nianling = $node->field_nianling[LANGUAGE_NONE][0]['value']; 可能會(huì)出錯(cuò),現(xiàn)在我們來(lái)介紹一個(gè)更好的方法.
在Drupal獲取一個(gè)自定義字段的值最常用的方法是:
$nianling = $node->field_nianling[LANGUAGE_NONE][0]['value'];
不過(guò)當(dāng)field_nianling內(nèi)容為空時(shí),會(huì)出現(xiàn)類似這樣的錯(cuò)誤:Notice:Undefined index: value in eval(),如果我們?cè)谠谌≈抵凹觽€(gè)判斷,如這樣:
- if (isset(field_nianling[LANGUAGE_NONE])) {
- $nianling = $node->field_nianling[LANGUAGE_NONE][0]['value'];
- //Vevb.com
- }
是可以解決問(wèn)題,但如果字段多時(shí),代碼看起來(lái)就不夠簡(jiǎn)潔,而且如果自定義字段是列表字段,就有可能還需要根據(jù)列表的 key 獲取相應(yīng)的 value 值。那么有沒有更好的方法來(lái)獲取自定義字段的值呢?
Drupal已經(jīng)給我們提供了一個(gè)
- <a href="https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_get_items/7">field_get_items</a>
函數(shù),原型如下:
- function field_get_items($entity_type, $entity, $field_name, $langcode = NULL)
函數(shù)說(shuō)明:
返回當(dāng)前語(yǔ)言的此字段項(xiàng)目.
參數(shù):
- $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 的返回字段項(xiàng)目,就可以使用:
- <a href="https://api.drupal.org/api/drupal/modules!field!field.module/function/field_view_value/7">field_view_value</a>
來(lái)渲染單個(gè)項(xiàng)目值:
- 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.
返回值指定字段的渲染數(shù)組
下面是一個(gè)顯示 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;
新聞熱點(diǎn)
疑難解答