未定义语言在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)。如果我拿走那条线,它会再次按预期工作。