2011-10-24 107 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');访问该字段。 –