Drupal 7改变节点显示

时间:2014-06-24 10:31:28

标签: drupal-7 field alter unset

我的内容类型包含两个图片字段,横幅和徽标。

我正在尝试实现逻辑,这将允许两者中的一个显示,具体取决于编辑器是选择仅显示横幅还是仅显示单选按钮选项中的徽标。

我设置了一个实现 hook_node_view 的小型自定义模块,并尝试从节点对象中取消设置图像字段但没有快乐。代码片段如下:

function mymodule_node_view($node, $view_mode, $langcode){
    unset($node->field_main_picture[$node->language][0]);
    unset($node->field_main_picture);
    $node->field_main_picture = null;
}

这些尝试都没有奏效。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我找到了问题的答案。

节点对象包含一个名为 content 的数组,它是Drupal将打印到屏幕的可渲染数据。 我的unset需要发生在那个数组中。即:

        unset($node->content['field_main_picture']);

主图片图像消失了。

答案 1 :(得分:0)

当你编程时,我几乎不建议你使用Devel模块。它允许您在页面中显示变量并可视化树。例如,您可以在dpm($node)中调用hook_node_view()功能,以查看$node中的内容以及如何访问它。