2011-10-24 106 views
0

在Drupal 6中拿到一個節點字段的值,你會怎麼做:Drupal的6 - > Drupal 7的遷移場UND的

$node->field_ajax_override[0]['value'] 

現在是:

$node->field_ajax_override['und'][0]['value'] 

這只是將是遷移的痛苦還是有更好的辦法?

+0

任何這運氣? –

回答

1

您可以使用echo render($content['field_ajax_override']);而不是在Drupal 7(除其他方式)

文章Rendering Drupal 7 Fields the right way討論爲什麼通過[ 'UND']變量的訪問是壞的。請參閱下面的摘錄。

首先,[「UND」]元件處於 Drupal 7的(見本文從伽柏Hojtsy以獲得更多關於該)的場定位的一部分; 直接訪問該值將導致任何種類的 多語言環境中的問題。噓。

通過訪問該字段值直接與你錯過這個 可能出現的正常場標記禮貌任何主題化。

如果您想從多值字段獲取每個值,您需要執行某種循環,[0] [safe_value]顯式地訪問字段的第一個值 - 。

某些字段(如節點引用)將不具有safe_value元素,只有一個值 - 可以很容易地打印,而不用考慮對其進行干預。這是危險的,而不是因爲 包含危險數據(他們只是一個NID),但節點參考字段,因爲它不是一個有用的 習慣進入,特別是對新的開發者。其他字段 類型的'價值'可能非常危險。

文章然後繼續提倡使用的field_view_field('node', $node, 'field_name');,但在大多數情況下render($content['field']);就足夠了,特別是如果你已經有機會獲得你的渲染節點,例如在node.tpl.php文件或其中的一個變化。

+0

不知道你的意見,因爲只有看到「但是,如果我們在做$節點= node_load(1);然後」 - 如果你是做$ loaded_node = node_load(1);然後你可以做field_view_field('node',$ loaded_node,'field_name');訪問該字段。 –