我有一个简单的问题.我的内容类型(标题图片)中有一个必须打印的字段page.tpl.php(因为布局).
它运行正常,我在theme_preprocess_page()函数中放了一些代码来显示page.tpl.php中的字段
function theme_preprocess_page( &$variables, $hook )
{
$node = menu_get_object();
if( $node && $node->type == 'page' )
{
$view = node_view($node);
$variables['headerimage'] = render($view['field_headerimage']);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我遇到了从节点视图隐藏field_headerimage的问题.它不能从管理ui(内容类型 - >管理显示)中隐藏,因为如果我从那里隐藏它,它将无法theme_preprocess_page()使用.
所以我尝试从preprocess_node隐藏该字段
function theme_preprocess_node( &$variables, $hook )
{
if( $variables['page'] )
{
hide($variables['field_headerimage']);
unset($variables['field_headerimage']);
$variables['field_headerimage'] = NULL;
}
}
Run Code Online (Sandbox Code Playgroud)
我添加了我试图删除显示的每一行代码.我究竟做错了什么?或者:你如何隐藏场地theme_preprocess_node()
Cli*_*ive 22
在hook_preprocess_node()内容中已经为节点对象构建并转储到content数组中; 这是将$content在模板文件中转换为的数组,以及从中删除字段显示所需的数组:
if( $variables['page'] )
{
hide($variables['content']['field_headerimage']);
// ...
Run Code Online (Sandbox Code Playgroud)
那应该摆脱它没问题.
为了完整起见,您也可以在node.tpl.php文件中轻松完成此操作:
hide($content['field_headerimage']);
Run Code Online (Sandbox Code Playgroud)
或者在hook_node_view()自定义模块中:
function MYMODULE_node_view($node, $view_mode, $langcode) {
hide($node->content['field_headerimage']);
}
Run Code Online (Sandbox Code Playgroud)