我的内容类型带有两个图像字段,横幅和徽标。
[我正在尝试实现一种逻辑,该逻辑将允许根据编辑器选择从单选按钮选项中仅显示横幅还是仅显示徽标来显示两者之一。
我设置了一个实现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;
}
这些尝试均无济于事。
我找到了问题的答案。
节点对象包含一个名为content的数组,这是Drupal将打印到屏幕的可渲染数据。我需要在此阵列中进行设置。即:
unset($node->content['field_main_picture']);
并且主图像消失。
我不建议您像这样编程时使用Devel模块。它允许您在页面中显示变量并可视化树。例如,您可以在dpm($node)
中调用hook_node_view()
函数以查看$node
中的内容以及如何访问它。