2010-08-17 275 views
1

我在显示自定义内容页面上的块时遇到很大麻烦。Drupal - 自定义内容类型中的自定义区域

所以这里的问题; 我想要在自定义内容类型Y的节点上显示块X. 我不希望此块显示在每个页面上,只显示具有给定内容类型的块。

如果我在自定义内容页面模板(例如Y.tpl.php)上定义自定义区域Z,则无法在此处显示区域内容($ Z),因为该变量显示为空。 如果我在page.tpl.php中定义了非常相同的区域,我可以毫无问题地打印区域内容。

所以我认为问题是区域变量($ Z)不会传递到自定义内容页面上。有什么办法可以实现这种行为?

回答

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); 
0

你可以用上下文做到这一点 - 因为你的页面要块>http://drupal.org/project/context

在有路径,节点/%NID或干净的网址,您可以设置上下文以仅在该区域中显示特定的区块。