未定义语言在Drupal阵列中登录时消失

问题描述:

我想从我的网站上的节点模板访问节点数组中的数据。当我登录时,这一切工作正常;但是,只要我注销阵列结构更改。经过一番小小的挖掘,我发现这是因为每当我注销时都会出现'und'数组。未定义语言在Drupal阵列中登录时消失

我尝试了很多解决方案,例如使用[$node->language],尝试通过#items阵列访问数据并使用field_get_items无济于事。我能在两种情况下都能正常工作的唯一方法是检查'und'是否存在,我发现它有点笨重,只是为了检索一个简单的布尔值或其他数据点。

尝试类似这样的东西。我并不确定你想要访问什么,但是这将根据正在呈现的节点的语言获取字段值。

获取节点的语言:

$node_language = field_language("node", $form["#node"], "field_YOUR_FIELD"); 

默认字段值:

$field_value = $form["field_YOUR_FIELD"][$node_language][0]["CHECK_ARRAY_FOR_VALUE"]["#default_value"]; 

已保存的字段值:

$field_value = $form["#node"]->field_YOUR_FIELD[$node_language][0]["CHECK_ARRAY_FOR_VALUE"];  

对于我这种行为的发生都有当我在page.tpl.php(!)中进行某些测试时,节点模板中的某些字段(不是全部)使用

dsm($node);

(使用模块Devel 7.x-1.5)。如果我拿走那条线,它会再次按预期工作。