登录后,Drupal数组中的未定义语言将消失


Undefined Language in Drupal Arrays disappears when logged in

我试图从我网站上的节点模板访问节点数组中的数据。当我登录这一切都很好;然而,只要我注销数组结构的变化。经过一番调查,我发现这是因为每当我注销时都会出现'und'数组。

我尝试了很多解决方案,如使用[$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"];

For Saved Field 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模块)。如果我把这一行去掉,它又像预期的那样工作了