我在自定义内容页面上显示块时遇到了很大的麻烦。
所以这就是问题; 我有块X,我想在自定义内容类型Y的节点上显示。 我不希望这个块在每个页面上显示,只有那些具有给定内容类型的页面。
如果我在自定义内容页面模板上定义自定义区域Z(例如Y.tpl.php),我无法在那里打印区域内容($ Z),因为该变量似乎是空的。 如果我在page.tpl.php上定义了相同的区域,我可以毫无问题地打印区域内容。
所以我认为问题是区域变量($ Z)没有在自定义内容页面上传递。有什么方法可以实现这种行为吗?
答案 0 :(得分:0)
使用内容类型页面上显示的特殊区域不是仅为特定内容类型的节点显示块的干净解决方案。每个页面都会由Drupal在内存中呈现该块。相反,您可能希望使用menu_get_object(
)使用某些PHP代码来控制块的可见性,以获取当前节点及其类型。
$node = menu_get_object();
return $node && $node->type == 'custom-content-type';
应在任何/node/$uid
和/node/$uid/*
页面上显示该块。为避免在/node/$uid/*
页面上显示该块,以下内容应该可以正常工作
$node = menu_get_object();
return $node && $node->type == 'custom-content-type' && !arg(2);
答案 1 :(得分:0)
您可以使用上下文执行此操作 - > http://drupal.org/project/context
由于您希望块所在的页面具有路径,节点/%nid或干净网址,因此您可以设置上下文以仅显示该路径所需的区域中的特定块。